Java ClassCastException获取JSON解析的java对象

时间:2014-10-22 08:08:12

标签: java android json

大家好我的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()
    {

    }
}

我想解析这个模型

3 个答案:

答案 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语法