2016-08-01 11 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

これは単なるスニペットですか、それとも「有効な」構造ですか?投稿したものは2つのルート要素を持ち、その間にコンマ区切りがありません(配列の要素である場合)。 – randomUser56789

+0

sanjay、クラス内の値を繰り返すか、構造全体が繰り返されますか? –

+0

クラスの値は繰り返しです –

答えて

0

ちょうど好奇心から、ジャクソン(ストリーミングパーサー、要素数が多いことがあるので)で何かしました。私はname:valueという出力を出すだけです。これは論理的にあなたの好みに合わせて拡張できます。これは生産に近いものではありませんが、良いスタートです。

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(); 
     } 
    } 
} 
関連する問題