2012-04-03 15 views
2

私は多くのページをチェックアウトしましたが、チュートリアルとスクリプトのほとんどはこのタイプのJSON出力でエラーコードを返します。だから、どのように私はあなたが私がジャクソンを使用することをお勧めしますJavaでJSONをデシリアライズ/シリアライズしようとしている場合はJavaの?:JavaのURLからJSONデータを取得するにはどうすればよいですか?

[ 
    { 
    "user":{"id":"1","username":"user1"}, 
    "item_name":"item1", 
    "custom_field":"custom1" 
    }, 
    { 
    "user":{"id":"2","username":"user2"}, 
    "item_name":"item2", 
    "custom_field":"custom2" 
    }, 
    { 
    "user":{"id":"3","username":"user3"}, 
    "item_name":"item3", 
    "custom_field":"custom3" 
    } 
] 
+0

既にURLからデータをダウンロードしましたが、それを読む方法を知りたいですか?または、最初にダウンロードする方法を知りたいですか? – ArjunShankar

+1

可能な重複:http://stackoverflow.com/questions/1688099/converting-json-to-java/1688182#1688182 –

+0

多くのライブラリはJSONコンテンツ全体を{}で囲み、JSONデータをラップしようとしています中括弧で囲みます。私はいつもjson-libを使って 'JSONObject.fromObject(yourJsonString);' – luukes

答えて

1

は、最初は、各要素とサブ要素を保持するためのクラスを宣言しますJSON配列)、およびそれを割り当てます。

MyElement[] data = gson.fromJson (myJSONString, MyElement[].class); 

その後、あなたは、単にdataの要素にアクセスします。

覚えておくべき重要なことは、宣言する属性の名前と型がJSON文字列の名前と型に一致していることです。例えば"ID"、 "ITEM_NAMEは" など

+0

これを使用しようとしましたが、まだエラーが発生しています。ここに私が持っているものへのpastebinリンクがあります:http://pastebin.com/nRiGqq9r MyElement [] data = new Gson()fromJson jsonText、MyElement.class); ' MyElement []をMyElementに変更する必要があることを示すので、これも機能しません。このスクリプトをどのように動作させることができますか? – Aronnn

+0

@Aronnn - fromJsonの呼び出しで、あなたが割り当てている型は 'MyElementではなくMyElement []。class'でなければなりません。class' – ArjunShankar

+0

ここに私のスクリプトには、私が得ているエラーがあります、私は本当に問題が何であるか把握していないようです:http://pastebin.com/iR7ysMx6 – Aronnn

0

にこのJSONからデータを抽出することができるだろう。 http://jackson.codehaus.org/

ジャクソンをダウンロードしたら、jsonの文字列をJSONのオブジェクトと一致するオブジェクトに逆シリアル化できます。

ジャクソンはあなたのクラスに付けることができるアノテーションを提供しています。このアノテーションを使用すると、デシリアライズを簡単に行うことができます。あなたのケースでJSONオブジェクトがあるので、次に

public class MyUser { 
    public String id; 
    public String username; 
} 

public class MyElement { 
    public MyUser user; 
    public String item_name; 
    public String custom_field; 
} 

は、あなたが(一番外側の要素の配列を宣言:あなたはGsonを使用したい場合は

+0

ジャクソンでこのJSONからデータを取得するにはどうしたらいいですか? – Aronnn

0

あなたはJSONシンプル
http://code.google.com/p/json-simple/

例を試みることができる:

JSONParser jsonParser = new JSONParser(); 
JSONArray jsonArray = (JSONArray) jsonParser.parse(jsonDataString); 

for (int i = 0; i < jsonArray.size(); i++) { 
    JSONObject obj = (JSONObject) jsonArray.get(i); 
    //Access data with obj.get("item_name") 
} 

ジャスト/ NULL値をチェック鋳造などに注意するように注意してください。

関連する問題