大家好我的Java问题。问题在于根据我的指示解析JSON与杰克逊。我的JSON解析得很好,这不是问题。问题在于我在一个JSON中有多个JSON项。我已经解决了这个问题:
ObjectMapper objectMapper = new ObjectMapper();
try {
List<Unit> unitList = objectMapper.readValue(json,List.class);
System.out.println("UnitSize " + String.valueOf(unitList.size()));
System.out.println(unitList.get(0).getUnitEmail());
} catch (IOException e) {
e.printStackTrace();
}
并且在UnitSize它会告诉我我有5个Unit类型的对象,这没关系,但是当我想从List中获取它时它会告诉我这个:
Exception in thread "main" java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.reddatura.API.HTTPRequest$Unit
我用谷歌搜索了它,但没有任何相关性。应该是什么问题
编辑:
这是我的课程片段:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Unit
{
@JsonProperty("unitid")
int unitId;
@JsonProperty("unitname")
String unitName;
@JsonProperty("unitlogo")
String unitLogo;
@JsonProperty("unitaddress")
String unitAddr;
//other fields, getters setters
@JsonCreator
public Unit()
{
}
}
我想解析这个模型
答案 0 :(得分:1)
我认为你没有正确地投射你的json值:
使用jackson
,您可以执行以下操作:
List<Unit> myUnits = objectMapper.readValue(json, objectMapper.getTypeFactory().
constructCollectionType(List.class, Unit.class));
希望有所帮助:)
答案 1 :(得分:1)
试试这个
ObjectMapper objectMapper = new ObjectMapper();
try {
Unit[] unit = objectMapper.readValue(jsonString, Unit[].class);
Log.i("TEST", String.valueOf(unit.length)+" ******* "+unit[1].getUnitEmail()+" ******* "+unit[1].getUnitName());
// or
List<Unit> unit1 = objectMapper.readValue(jsonString, new TypeReference<List<Unit>>() { });
Log.i("TEST_1", String.valueOf(unit1.size())+" ****11111*** "+unit1.get(1).getUnitEmail()+" **1111111**** "+unit1.get(1).getUnitName());
} catch (IOException e) {
e.printStackTrace();
}
答案 2 :(得分:0)
做这样的事情:
JSONObject jObject = new JSONObject(jsonString);
JSONArray jsonArray = jObject.getJSONArray("posts");
for (int i = 0; i < jsonArray.length(); i++) {
int a = jsonArray.getJSONObject(i).getInt("a"),
String s = jsonArray.getJSONObject(i).getString("b"));
}
jsonString是String变量,必须是Json语法