2017-02-15 2 views
-3

は、私は次のようなJSON文字列を持っていると仮定すると:JSONをJavaアプリケーションでマーシャリング/アンマーシャリングする方法はありますか?

 
{ 
    "1": { 
    "id": "12", 
    "name": "xyz" 
    }, 
    "2": { 
    "id": "12", 
    "name": "xyz" 
    }, 
    "3": { 
    "id": "12", 
    "name": "xyz" 
    }, 
    "4": { 
    "id": "12", 
    "name": "xyz" 
    }, 
    "5": { 
    "id": "12", 
    "name": "xyz" 
    }, 
    "6": { 
    "id": "12", 
    "name": "xyz" 
    } 
} 

はどのようにしてJavaアプリケーション内からこのJSON構造を作成するに行きますか? JSON for Javaのマーシャリングとアンマーシャリングを支援する優れたライブラリはありますか?

答えて

0

jackson-coreのようなライブラリを使用すると、最小限のコードで簡単にjsonをオブジェクト表現に簡単に変換することができます。

たとえば、示されたJSONは、以下のようにSomeObjectが表現されるMap<String,SomeObject>であろう:

public class SomeObject { 
    private String id; 
    private String name; 
} 

次のようにマップがマップエントリのためidnameを取るコンストラクタを仮定すると、移入されます値。明らかにこれは基本です

ObjectMapper mapper = new ObjectMapper(); 
Map<String, SomeObject> map = new LinkedHashMap<>(); 
map = mapper.readValue(json, new TypeReference<Map<String,SomeObject>>(){}); 

:あなたはJSON文字列を持っていた場合

String output = new ObjectMapper().writeValueAsString(map); 

、あなたがオブジェクト表現を取得したい:今すぐ

Map<String, SomeObject> map = new LinkedHashMap<>(); 
map.put("1", new SomeObject("12", "xyz")); 
map.put("2", new SomeObject("12", "xyz")); 
map.put("3", new SomeObject("12", "xyz")); 
map.put("4", new SomeObject("12", "xyz")); 
map.put("5", new SomeObject("12", "xyz")); 
map.put("6", new SomeObject("12", "xyz")); 

は、JavaからJSON文字列を取得します概要。 github hereでホストされているJackson APIのドキュメントを読むことは賢明でしょう。

0

別のライブラリ:fastjsonをお勧めします。ジャクソンを比較すると、シンプルで、速く、小さくなります。

Map<String, Object> map = JSON.parseObject(json, Map.class); 
0

ここにはすでにjackson、gson、org.jsonなどの人気のあるライブラリがあります。
シリアライズを扱わない便利なライブラリもありますが、例えば、https://github.com/jayway/JsonPathのように解析に便利です。おそらく(自分でテストしていない)少し遅くて便利かもしれません。
1秒間に大量のjsonドキュメントや非常に大きな/ complesドキュメント(またはその両方)を処理しない場合は、おそらくシンプルに見えるライブラリを選択できます。私が言及したケースに対処する場合は、いくつかのパフォーマンステストの結果をgoogleで読むか、可能であれば独自のテストを実行する必要があります。

関連する問題