在java中解析json文件内容

时间:2016-03-29 15:51:48

标签: java json

我有一个json文件,其中包含以下json数据。

[{"id":1025,
"key":"SVS",
"prj_name":"SVS",
"prj_scope":"PR8",
"prj_qualifier":"WW",
"date":"2016-03-29T06:00:26-0400",
"creationDate":"2013-04-12T09:03:35-0400",
"prj_lname":"SVS",
"csr":[{"key":"test_success","test_output":85.3,"org_val":"78.3%"}]}]

我想在java中读取test_output值。我尝试了几个json-simple api。下面是我写的代码。

StringBuffer sbf = new StringBuffer();
FileReader fileReader = new FileReader("C:/Users/java_backups/Downloads/output.json");
BufferedReader br = new BufferedReader(fileReader);
String line="";
while ((line = br.readLine()) != null) {
    sbf.append(line);
}
System.out.println(sbf.toString());
JSONParser jsonParser = new JSONParser();
JSONArray jsonArray= (JSONArray) jsonParser.parse(sbf.toString());

jsonArray的大小只有一个。我没有任何线索如何从json字符串中读取test_output值。

1 个答案:

答案 0 :(得分:1)

使用杰克逊简化:

public class Test {

    private static final String JSON = "[{\"id\":1025,\"key\":\"SVS\",\"prj_name\":\"SVS\",\"prj_scope\":\"PR8\",\"prj_qualifier\":\"WW\",\"date\":\"2016-03-29T06:00:26-0400\",\"creationDate\":\"2013-04-12T09:03:35-0400\",\"prj_lname\":\"SVS\",\"csr\":[{\"key\":\"test_success\",\"test_output\":85.3,\"org_val\":\"78.3%\"}]}]";

    public static void main(String[] args) throws IOException {

        ObjectMapper mapper = new ObjectMapper();
        JsonNode actualObj = mapper.readTree(JSON);
        System.out.println(actualObj.findValue("test_output"));
    }

}

相关性:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.7.3</version>
    </dependency>

如果在每个JsonObject中只有一个具有给定名称的输出,这将起到作用。只需迭代JsonArray并找到每个JsonObject的值。如果你的数组总是只有1个元素,那么只需忽略迭代部分,就像我上面那样使用它。