8

私はこのようなデータを持っています:

ニュース記事 :

  • id
  • タイトル
  • 日にち
  • TXT

多くのNewsItemが10と言っているかもしれません。私はそれらをjqueryに送信する必要があります。

私はこれをやっています:

JSONObject obj = new JSONObject();
JSONArray arr = new JSONArray();

for(int i = 0 ; i< list.size() ; i++){
    p = list.get(i);
    arr.put(p.getId());
    arr.put(p.getTitle());
    arr.put(new MyDateFormatter().getStringFromDateDifference(p.getCreationDate()));
    arr.put(getTrimmedText(p.getText()));
    obj.put(""+i,arr);
    arr = new JSONArray();
}

これにより、次のようなJSON文字列が作成されます。{"1":["id","title","date","txt"],"2":[......and so on...

これを行う正しい方法ですか?

この文字列を解析して、jQueryで各ニュースアイテムオブジェクトを取得し、attrにアクセスできるようにするにはどうすればよいですか。

このような:

obj.id,
obj.title

または、これがJSON文字列を作成する間違った方法である場合は、jQueryでの解析の例を使用してより良い方法を提案してください。

4

4 に答える 4

20

データを逆方向に整理していると思います。の配列を使用したいようです。その場合NewsItems、javaJSON生成コードは次のようになります。

JSONObject obj = new JSONObject();
JSONArray arr = new JSONArray();

for(int i = 0 ; i< list.size() ; i++)
{
    p = list.get(i);

    obj.put("id", p.getId());
    obj.put("title", p.getTitle());
    obj.put("date". new MyDateFormatter().getStringFromDateDifference(p.getCreationDate()));
    obj.put("txt", getTrimmedText(p.getText()));

    arr.put(obj);

    obj = new JSONObject();
}

これで、JSON文字列は次のようになります。

[{"id": "someId", "title": "someTitle", "date": "dateString", "txt": "someTxt"},
 {"id": "someOtherId", "title": "someOtherTitle", "date": "anotherDateString", "txt": "someOtherTxt"},
 ...]

NewsItemゲッターが戻ると仮定しますStrings。JSONObjectメソッドputは、プリミティブ型も取得するようにオーバーロードされているため、たとえば、をgetId返す場合intは、ベアJSONとして追加されますintJSONObject.put(String, Object)値を呼び出すと仮定しますtoStringが、これを確認することはできません。

これで、JavaScriptで、このような文字列を直接使用できます。

var arr =
    [{"id": "someId", "title": "someTitle", "date": "dateString", "txt": "someTxt"},
     {"id": "someOtherId", "title": "someOtherTitle", "date": "anotherDateString", "txt": "someOtherTxt"}];

for (i = 0; i < arr.length; i++)
    alert(arr[i].title); // should show you an alert box with each first title
于 2012-07-20T21:25:04.957 に答える
1

jsonオブジェクトの考え方は、キーとそれらのキーに値が割り当てられている辞書/マップと同じであるため、作成するものは次のようになります。

{"1": {"title": "my title", "date": "17-12-2011", "text": "HELLO!"}, "2": ....}

ここで、「1」はIDであり、内容は情報を含む別の辞書/マップです。

オブジェクトをmy_mapという名前の変数に割り当てたとすると、次のように処理できるようになります。

 my_map.1.title
 my_map.3.text
 ...

それを繰り返すには、次を使用します。

for (info in my_map){
    data = my_map[info];
    //do what you need
}
于 2012-07-20T21:22:32.370 に答える
0

JSONオブジェクトをJSON文字列に変換するには

JSON.stringify(json_object)

逆使用の場合:

JSON.parse(json_string)
于 2012-07-20T21:21:07.117 に答える
0

これは正しい方法です-

final JSONArray arr = new JSONArray();

for(int i = 0 ; i< list.size() ; i++) {
    final JSONObject obj = new JSONObject();
    p = list.get(i);
    obj.add("id", p.getId());
    obj.add("title", p.getTitle());
    obj.add("date", new MyDateFormatter().getStringFromDateDifference(p.getCreationDate()));
    obj.add("txt", getTrimmedText(p.getText()));
    arr.add(obj);
}

これにより、

[{"id": 1, "date": 222, "title": "abc", "txt": "some text"}, {...}]

これで、クライアント側でjsonを解析するときに、配列を反復処理でき、jsonオブジェクトごとに次のようにアクセスできます-

obj.idまたobj["id"]

于 2012-07-20T21:21:52.980 に答える