用jackson-mapper解析json文件错误

时间:2014-07-05 23:36:29

标签: java android json jackson

我想解析这个json结构

我启发了这个教程[如何用android中的杰克逊解析json文件] [http://www.tutos-android.com/parsing-json-jackson-android]

"Categorie": [
    {
        "typecategorie" : "Country",
        "valeurcategorie":  ["Afghanistan","Albania","Zambia","Zimbabwe"]
    },
    {
        "typecategorie": "Year",
        "valeurcategorie": ["1911","1912","1913","1960","1961","1962","1963",,"2054"]
    },
    {
        "typecategorie": "Number",
        "valeurcategorie": ["1","2","3","4","5","6","7","8","9","10","11"]
    }]

我使用这个类

    public class Categorie {

    private String typecategorie;
    private List<String> valeurcategorie;

    public Categorie(){
        super();
        this.typecategorie = "";
        this.valeurcategorie = new ArrayList<String>();
    }

    public Categorie(String typecategorie,ArrayList<String> valeurcategorie ){
        super();
        this.typecategorie = typecategorie;
        this.valeurcategorie.addAll(valeurcategorie);

    }

    public List<String> getValCategorie(){
        return this.valeurcategorie;
    }
    public String gettypecategorie(){
        return typecategorie;
    }
    public void settypecategorie(String typecategorie){
        this.typecategorie = typecategorie;
    }

}

此代码用于加载我的对象

public void LoadJson(String fileName) {
        try {
            LoadFile(fileName);
            // InputStream inputStream = urlConnection.getInputStream();
            jp = jsonFactory.createJsonParser(jsonFile);
            categories = objectMapper.readValue(jp, Categories.class);
            categorieList = categories.get("categorie");
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

但我收到此错误代码

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "valeurcategorie" (Class fr.lilperso.worldcupquizz.Categorie), not marked as ignorable
 at [Source: /mnt/sdcard/worldCupQuizz/categorie.json; line: 5, column: 24] (through reference chain: fr.lilperso.worldcupquizz.Categorie["valeurcategorie"])

2 个答案:

答案 0 :(得分:1)

您需要valeurcategorie的设定者。将其添加到您的Categories班级:

public void setValeurcategorie(List<String>  valeurcategorie) {
    this.valeurcategorie = valeurcategorie;
}

答案 1 :(得分:0)

您正尝试使用

将列表/数组反序列化为单个对象
categories = objectMapper.readValue(jp, Categories.class);

如果您使用数组或TypeReference列表,则必须使用Categories [] .class而不是Categories.class。参见

How to use Jackson to deserialise an array of objects