我有一个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值。
答案 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个元素,那么只需忽略迭代部分,就像我上面那样使用它。