JAVA Json自动解析特定值

时间:2018-03-06 19:09:23

标签: java json eclipse parsing org.json

注意:这是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”。不知道如何做到这一点。任何帮助表示赞赏。谢谢!

3 个答案:

答案 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

How to parse JSON in Java

答案 1 :(得分:0)

从JSON字符串中,只需执行indexOf(“\”weWantThis \“:”),然后解析下一个值。为什么当你只查找没有结构的文字时,通过JSON解析器运行它?

答案 2 :(得分:0)

您可以使用JSONPath库。它支持通配符,并支持通过浏览json结构来检索任意键的值。

JSONPath

你甚至可以在这里试试你的具体例子 -

Try out JSONPath

输入您想要的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");