2016-08-01 118 views
0

我对JSON新的,我想用设备ID读取JSON文件,我有一个文件的许多文件,就像一个数据库:如何使用Java在单个JSON文件中读取多个JSON文档?

{ 
     "deviceType":"AccessPoint", 
     "transactionType":"response", 
     "messageType":"set_config", 
     "classes":[ 
      { 
       "deviceType":"AccessPoint", 
       "classId":1, 
       "ipv4":"192.168.100.100", 
       "netmask":"192.168.100.100", 
       "ipv6":"192.168.100.100", 
       "className":"Interface", 
       "interfaceName":"wlan0", 
       "state":"UP", 
       "type":"wireless", 
       "deviceId":"1234", 
       "status":"waiting" 
      } 
     ], 
    "deviceId":"1234", 
    "transactionId":"201675" 
    } 

有时候,班阵列包含多个阵列比如索引[ {},{},..]。 那么,如何使用java web应用程序的搜索条件阅读文档。

+0

这只是一个片段还是“有效的”结构?您发布的内容有两个根元素,并且两者之间没有逗号分隔(如果它们是数组的元素)。 – randomUser56789

+0

sanjay,做类内重复值或整个结构重复? –

+0

里面的类的值是重复的 –

回答

0

出于好奇,在杰克逊(流分析器,因为有大量的元素提及)做了一些事情。我只是做一个输出作为名称:值,这可以在逻辑上增强,以适应您的口味。这甚至不接近生产,但是一个好的开始。

import java.io.FileInputStream; 
import com.fasterxml.jackson.core.JsonFactory; 
import com.fasterxml.jackson.core.JsonParser; 
import com.fasterxml.jackson.core.JsonToken; 

public class TestClass { 

    public static void main(String[] args) { 
     try (FileInputStream fis = new FileInputStream("yourpath/transactions.json")) { 
      JsonFactory jf = new JsonFactory(); 
      JsonParser jp = jf.createParser(fis); 
      //System.out.println(JsonToken.START_ARRAY); 
      // jp.setCodec(new ObjectMapper()); 
      jp.nextToken(); 
      while (jp.hasCurrentToken()) { 

       if (jp.getCurrentToken().equals(JsonToken.START_OBJECT) 
         || jp.getCurrentToken().equals(JsonToken.START_ARRAY) 
         || jp.getCurrentToken().equals(JsonToken.END_ARRAY) 
         || jp.getCurrentToken().equals(JsonToken.END_OBJECT)) { 
       } else { 
        System.out.print(jp.getText()); 
        jp.nextToken(); 
        System.out.print(":"); 
        System.out.print(jp.getText()); 
        System.out.println(); 
       } 
       jp.nextToken(); 
      } 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
}