我无法解析包含对象数组的JSON流,在这里我只添加了一个对象以进行简化。
{
"status": true,
"categories": [
{
"obj_cat_id": "26",
"session_user": "212233379",
"timestamp": "2011-10-30 04:34:53"
}
]
}
我尝试了什么:
try {
JsonFactory f = new JsonFactory();
JsonParser jp = f.createJsonParser(is);
jp.nextToken(); /* START_OBJECT */
while (jp.nextToken() != JsonToken.END_OBJECT) {
if ("status".equals(jp.getCurrentName())) {
jp.nextToken(); /* VALUE_TRUE */
status = jp.getText();
Constants.showLog("Status", jp.getText());
} else if ("categories".equals(jp.getCurrentName())) {
//jp.nextToken();
while (jp.nextToken() != JsonToken.END_ARRAY) {
//jp.nextToken();
while (jp.nextToken() != JsonToken.END_OBJECT) {
String namefieldOne = jp.getText();
Constants.showLog(TAG, namefieldOne);
}
}
}
}
jp.close();
主要问题是,当我执行当前令牌为START_ARRAY的jp.nextToken时,它直接转到END_ARRAY,我无法访问其对象值。
我正在使用Jackson Streaming解析器以提高效率。
答案 0 :(得分:0)
您考虑使用GSON吗?您可以在服务器端或客户端(Android)使用它。 将共享首选项保存为JSON和东西:)
public class Category {
Long obj_cat_id;
Long session_user;
Timestamp timestamp;
/* Getters && Setters */
}
public class MyEntity
{
private boolean status;
private List<Category> categories;
/* Getters && Setters */
}
public class Serializer
{
private static Gson _gson;
static
{
_gson = new Gson();
}
public static <T> T jsonToObject(String json, Type type)
{
return _gson.fromJson(json, type);
}
public static <T> String getJson(T object)
{
Type type = new TypeToken<T>()
{}.getType();
return _gson.toJson(object, type);
}
}
像这样使用:
String myJsonString = "{
"status": true,
"categories": [
{
"obj_cat_id": "26",
"session_user": "212233379",
"timestamp": "2011-10-30 04:34:53"
}
]
}";
MyEntity myEntity= Serializer.jsonToObject(myJsonString , MyEntity.class);
/* And vice-versa */
答案 1 :(得分:0)