注意:这是org.json.simple
在下面的例子中,我总是想要“weWantThis”值。 例如,我们有Json:
例1。
{
"Header1": {
"Basex": "ws",
"Random": {
"Something": "information"
},
"age": 22,
"Type": "Apa",
"correlation": "x",
"weWantThis": "somethingHere"
}
}
示例2。
{
"Header1": {
"useful": "yes",
"code": 200,
"creation": {
"isValid": "yes",
"date": 25,
"items": [
"pc"
],
"weWantThis": "somethingHere"
}
}
}
正如您所看到的,Jsons的格式完全不同,可能会更加不同。目标是自动检索“weWantThis”的值。即所有其他标题等都是未知的,除了“weWantThis”当然。如果它不存在,只需返回null。 所以基本上需要自动解析才能找到“weWantThis”。不知道如何做到这一点。任何帮助表示赞赏。谢谢!
答案 0 :(得分:0)
首先需要将此字符串加载到JSONObject
中类似的东西:
JSONObject ob = new JSONObject(string_content)
现在您需要遍历每个键值对。 值可以是简单对象(Boolean,String,int等)或JSONArray或JSONObject。在后两种情况下,您可以递归调用刚刚在值上编写的相同函数。在JSONArray的情况下,您将不得不迭代数组中的每个项目并递归调用此函数。
你继续这样做,直到你发现密钥是“weWantThis”
要查找给定JSONObject中的所有键,您可以使用此处建议的内容: https://stackoverflow.com/a/20419508/2649309
https://www.codevoila.com/post/65/java-json-tutorial-and-example-json-java-orgjson#toc_5
答案 1 :(得分:0)
从JSON字符串中,只需执行indexOf(“\”weWantThis \“:”),然后解析下一个值。为什么当你只查找没有结构的文字时,通过JSON解析器运行它?
答案 2 :(得分:0)
您可以使用JSONPath库。它支持通配符,并支持通过浏览json结构来检索任意键的值。
你甚至可以在这里试试你的具体例子 -
输入您想要的JSON然后尝试此路径 -
$..weWantThis
这是一个具体的实现 -
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.Option;
import com.jayway.jsonpath.PathNotFoundException;
Object document = Configuration.defaultConfiguration().addOptions(Option.SUPPRESS_EXCEPTIONS).jsonProvider()
.parse(<jsonString>);
String value = JsonPath.read(document, "$..weWantThis");