3

関数を使用してリスト項目、名前、id を jsonobject に追加し、そのオブジェクトを呼び出された関数に返し、ずっと取得しています..しかし、その json 文字列の解析と少し混乱しています。

JSONObject obj = abcobj.function();

public JSONObject function()
{
  jsonobj.put("test",list);
  jsonobj.put("name",name);
  jsonobj.put("id",id);
  return jsonobj;
}

System.out.println("Json object"+devid);

出力

 {"test":["test","test1"],"name":"xxxxx","id":"1234"}

このオブジェクトの解析を手伝ってください

4

7 に答える 7

3

JSONObject クラスのインスタンスを作成し、for ループを使用して各 json アイテムを処理し、最後に各 json データを変数に格納します。

JSONObject jsonRoot = new JSONObject(jsonData);
  List<String> list = new ArrayList<String>();    
  JSONArray jsonList = jsonRoot.getJSONArray("test");
 for (int i = 0; i < jsonList.length(); i++) {
          list.add(jsonList.getString(i));
   }
 String str_name = jsonRoot.getString("name");
 Integer str_id = Integer.valueOf(jsonRoot.getInt("id"));

これがあなたを助けることを願っています。

于 2013-08-05T12:52:53.057 に答える
0

正確に何を解析したいですか?たとえば、test1 内のデータにアクセスする必要がある場合は、test[1] を取得してから、そこからデータを取得する必要があります。なぜリストにオブジェクトの名前が表示されているのか疑問に思っている場合は、そのリストに追加しているクラスに、オブジェクトの名前のみを表示している toString があると思います。

もう 1 つ注意すべき点は、出力で表示された json は有効な json ではないということです。むしろ、同じ名前の 2 つのフィールドがありますが、オブジェクトは同じ名前のフィールドを 1 つしか持つことができないため、これはお勧めできません。

json の作成と解析に使用しているすべてのコードを投稿できますか? また、GSONの使用を検討しましたか? Google の非常にシンプルで強力な JSON ライブラリ。

于 2013-08-05T12:25:15.310 に答える
0
Object s=devid.get("test");
ArrayList<String> d=new ArrayList<>();
d=(ArrayList<String>) s;
for(Object i: d)
    {
    System.out.println(i);
    }

    System.out.println(obj.get("name"));
    System.out.println(obj.get("id"));
*output*

test
test1
xxxxx 
1234
于 2013-08-06T03:33:48.700 に答える
0

InterestKeys をリストに格納するとします。

org.jsonライブラリの使用:

JSONObject obj = new JSONObject("{interests : [{interestKey:Dogs},{interestKey:Cats}]}");

List<String> list = new ArrayList<String>();
JSONArray array = obj.getJSONArray("interests");
for(int i = 0 ; i < array.length() ; i++){
    list.add(array.getJSONObject(i).getString("interestKey"));
}
于 2013-08-05T12:28:43.703 に答える
0

次のいずれかの方法を使用できると思います。

1 つ目: ドメイン オブジェクトを定義し、フレームワークを使用して文字列をこのオブジェクトに「逆シリアル化」します。GSON/Jackson はここであなたのために働くはずです

例:

public class MyObject {
   String [] test;
   String name; // the second name in example is wrong json 
}

GSON を次のように使用します。

 MyObject obj = new Gson().fromJson(yourStringComesHere, MyObject.class);
 obj.name

もちろん、MyObject クラスのデータ フィールドへの getter/private アクセスを提供する必要がありますが、これはその考え方をほぼ説明しています。

または、JSONObject で作業を続けることもできます。次のようにゲッターが必要です。

JSONObject jsonObject = getObjectSomehow(); jsonObject.get("名前");

お役に立てれば

于 2013-08-05T12:30:38.197 に答える