0

私はこのようなものを返すjson出力を持っています:

[
 {
  "title":"facebook",
  "description":"social networking website",
  "url":"http://www.facebook.com"
 },
 {
  "title":"WoW",
  "description":"game",
  "url":"http://us.battle.net/wow/"
 },
 {
  "title":"google",
  "description":"search engine",
  "url":"http://www.google.com"
 }
]

私はtitleオブジェクトを持つjsonの解析に精通していますが、titleオブジェクトが欠落しているため、上記のjsonを解析する方法についてはわかりません。それらをチェックして上記のコードの解析に取り組むことができるように、いくつかのヒント/例を教えていただけますか?

注:ここで同様の例を確認しましたが、満足のいく解決策はありません。

4

4 に答える 4

1

JSONObject.has(String name)を使用して、キー名が現在のjsonに存在するかどうかを確認します。

 JSONArray jsonArray = new JSONArray("json String");
 for(int i = 0 ; i < jsonArray.length() ; i++) {
   JSONObject jsonobj = jsonArray.getJSONObject(i);
   String title ="";
   if(jsonobj.has("title")){ // check if title exist in JSONObject

     String title = jsonobj.getString("title");  // get title
   }
   else{
        title="default value here";
    }

}
于 2013-02-05T12:44:16.533 に答える
1
JSONArray jsonArr = new JSONArray(jsonResponse);

for(int i=0;i<jsonArr.length();i++){ 
JSONObject e = jsonArr.getJSONObject(i);
String title = e.getString("title");
}
于 2013-02-05T12:45:15.910 に答える
1

JSONはオブジェクトの配列です。

ライブラリ(およびその他のJSONシリアル化/逆シリアル化)ライブラリに関する全体的な考え方Gsonは、最終的には独自のPOJOを使用することです。

配列に含まれるオブジェクトを表すPOJOを作成し、ListそのJSONからそれらのオブジェクトを取得する方法は次のとおりです。

public class App 
{
    public static void main( String[] args ) 
    {
        String json = "[{\"title\":\"facebook\",\"description\":\"social networking website\"," +
            "\"url\":\"http://www.facebook.com\"},{\"title\":\"WoW\",\"description\":\"game\"," +
            "\"url\":\"http://us.battle.net/wow/\"},{\"title\":\"google\",\"description\":\"search engine\"," +
            "\"url\":\"http://www.google.com\"}]";

        // The next 3 lines are all that is required to parse your JSON 
        // into a List of your POJO
        Gson gson = new Gson();
        Type type = new TypeToken<List<WebsiteInfo>>(){}.getType();
        List<WebsiteInfo> list = gson.fromJson(json, type);

        // Show that you have the contents as expected.
        for (WebsiteInfo i : list)
        {
            System.out.println(i.title + " : " + i.description);
        }
    }
}

// Simple POJO just for demonstration. Normally
// these would be private with getters/setters 
class WebsiteInfo 
{
    String title;
    String description;
    String url;
}

出力:

フェイスブック:ソーシャルネットワーキングウェブサイト
すごい:ゲーム
グーグル:検索エンジン

編集して追加: JSONはさまざまなものであるため、ジェネリックスが関係しているためTypeToken、に到達するにはを使用する必要があります。Listあなたは実際にそれなしで次のことをすることができます:

WebsiteInfo[] array = new Gson().fromJson(json, WebsiteInfo[].class); 

WebsiteInfoこれで、1行のコードからオブジェクトの配列ができました。そうは言っても、ジェネリックCollectionまたはList実証されているように使用する方がはるかに柔軟性があり、一般的に推奨されます。

これについて詳しくは、Gsonユーザーガイドをご覧ください。

于 2013-02-05T17:31:15.867 に答える
0
JSONArray array = new JSONArray(yourJson);
for(int i = 0 ; i < array.lengh(); i++) {
JSONObject product = (JSONObject) array.get(i);
    .....
}
于 2013-02-05T12:44:46.360 に答える