我有这样的数据:
NewsItem:
可能有许多NewsItems说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();
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个这样的JSON字符串: {"1":["id","title","date","txt"],"2":[......and so on...
这样做是否正确?
我如何解析这个字符串,以便我可以在jQuery中获取每个新闻项对象,以便我可以访问attr.
像这样:
obj.id,
obj.title
Run Code Online (Sandbox Code Playgroud)
或者,如果这是创建JSON字符串的错误方法,请通过jQuery中的解析示例提出一些更好的方法.
pb2*_*b2q 19
我相信你正在向后组织你的数据.看来你想要使用一个数组NewsItems,如果是这样,那么你的java JSON生成代码应如下所示:
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();
}
Run Code Online (Sandbox Code Playgroud)
现在你的JSON字符串看起来像这样:
[{"id": "someId", "title": "someTitle", "date": "dateString", "txt": "someTxt"},
{"id": "someOtherId", "title": "someOtherTitle", "date": "anotherDateString", "txt": "someOtherTxt"},
...]
Run Code Online (Sandbox Code Playgroud)
假设你的NewsItem让人回归Strings.JSONObject方法也put被重载以获取原始类型,因此,如果您getId返回an int,那么它将被添加为裸JSON int.我会假设JSONObject.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
Run Code Online (Sandbox Code Playgroud)