2016-03-29 21 views
0

Aşağıda json verileri içeren bir json dosyası var.java içinde json dosya içeriğini ayrıştırma

[{"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'da test_output değerini okumak istiyorum. Birkaç json basit api ile denedim. Yazdığım kod aşağıdadır.

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 boyutu yalnızca bir tanesidir. Ben herhangi bir ipucu yok json stringinden test_output değerini nasıl okuyabilirim. basitlik için Jackson kullanma

+0

java ile java kullanmıyorum, bu yüzden emin değilim, ama benim tahminim senin dizinin sadece 1 elementi var çünkü sadece bir JSON nesnesini ayrıştırıyorsun. Ve bir nesne olduğu için, jsonArray [0] .id, vb. Ile özelliklerine erişebilmeniz gerekir. – NAMS

+0

jsonArray [0] bana tam bir dizge döndürecek ve öğelere adlarına göre erişmenin herhangi bir yolunu göremiyorum. –

+0

JSONParser belgelerine baktığımda, aslında dosyayı doğru şekilde ayrıştırdığınızı düşünmüyorum; hangi paketi kullanıyorsunuz? javax.json.stream? Ya da başka bir yerden harici bir paket mi? – NAMS

cevap

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")); 
    } 

} 

Bağımlılık:

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

yalnızca her JSONObject nesnesi verilen isimde 1 çıkış varsa, bu hile olacaktır. Sadece JsonArray üzerinde yineleyin ve her bir JsonObject için değeri bulun. Eğer diziniz her zaman sadece 1 elementse, yineleme kısmını göz ardı edin ve sadece yukarıda yaptığım gibi kullanın.

+0

Teşekkürler, benim için çalıştı. Eklemek istediğim tek şey, Object Mapper sınıfı, maven kullanmıyorsa jackson-all paketinde mevcuttur. –