我有一个像这样的 json 字符串
{
"profile":{
"personalInfo":{
"name":"Sample",
"address":"XXX",
"town":"YYY"
}
}
}
我想通过动态发送 key 来检索数据。 我可以通过直接给出 key 来检索。但我不想要这样。
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree("aboveJsonString");
JsonNode subNode = jsonNode.path("profile");
但我必须动态提供“个人资料”。我将从 api 请求中获取该参数。建议我采取什么方法?
最佳答案
当您不知道JSON Object
中的键名时您可以使用 elements 迭代所有元素返回 Iterator<JsonNode>
。在你的情况下,你有两个 JSON Object
s 带有一个键值对,你可以像下面这样遍历它:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
import java.io.File;
public class JsonPathApp {
public static void main(String[] args) throws Exception {
File jsonFile = new File("./resource/test.json").getAbsoluteFile();
ObjectMapper mapper = JsonMapper.builder()
.build();
JsonNode root = mapper.readTree(jsonFile);
JsonNode personalInfo = root.elements().next().elements().next();
System.out.println(personalInfo);
}
}
上面的代码打印:
{"name":"Sample","address":"XXX","town":"YYY"}
关于java - 通过使用 Jackson API 动态发送 key 来检索 JSON 字符串中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59267644/