我有一个json字符串如下,我需要转换为Android中的List对象。
[
{
"name":"Name1",
"images":["http://abc.jpg", "http://aaa.jpg"]
},
{
"name": "Name2",
"images":["dads", "dsadsd"]
}
]
在Android中,我声明了一个名为MyObject.class的Model类
class MyObject{
public String name;
public List<String> images;
}
public void testConvertJson(){
ObjectMapper mapper = new ObjectMapper();
List<MyObject> result = mapper.readValue(getResources().openRawResource(R.raw.m1), new TypeReference<List<MyObject>);
}
结果StackTrace:
09-04 22:47:17.961: W/System.err(5854): com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token
09-04 22:47:17.961: W/System.err(5854): at [Source: android.content.res.AssetManager$AssetInputStream@fe387ee; line: 242, column: 13] (through reference chain: com.demo.models.MyObject["images"])
请帮助我,非常感谢!
答案 0 :(得分:0)
IMO,您可以使用 Log.i("position",position);
解决您的问题,例如:
Gson
希望这有帮助!
答案 1 :(得分:0)
不确定您使用的方法,我通常会创建自己的解析器。可能不是最有效的,但我个人更了解它。
我认为这应该有效。应该适用于任何类似格式的字符串我相信。
String mess = getResources().getString(R.raw.m1);
List<MyObject> myObjects = new ArrayList<MyObject>();
try {
JSONArray jsonArray = new JSONArray(mess);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
MyObject myObject = new MyObject();
myObject.name = jsonObject.get("name");
String arrayOfStringString = jsonObject.get("images");
arrayOfStringString = arrayOfStringString.replace(" ","").replace("[","").replace("]","");
String[] images = ArrayarrayOfStringString.split(",");
myObject.images = java.util.Arrays.asList(images);
myObjects.add(myObject);
}
} catch (JSONException e) {
e.printStackTrace();
}