0

JSONを解析するためにJacksonライブラリを使用しています。

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

これが私がしていることです:

public void testJackson() throws IOException {
    JsonFactory factory = new JsonFactory();
    ObjectMapper mapper = new ObjectMapper(factory);
    File from = new File("emp.txt"); // JSON object comes from
    TypeReference<HashMap<String, Object>> typeRef = new TypeReference<HashMap<String, Object>>() {};
    HashMap<String, Object> o = mapper.readValue(from, typeRef);
    Employees employees = new Employees();
    employees.employees = (List<Employer>)o.get("employees"); // retrieving list of Employer(s)
    employees.showEmployer(1); // choose second to print out to console

    System.out.println("Got " + o); // just result of file reading
}

public static class Employees {
    public List<Employer> employees;

    public void showEmployer(int i) {
        System.out.println(employees.get(i));
    }
}

public static class Employer {
    public String firstName;
    public String lastName;
}

私が得ている出力:

{firstName = Anna、lastName = Smith}

{employees = [{firstName = John、lastName = Doe}、{firstName = Anna、lastName = Smith}、{firstName = Peter、lastName=Jones}]}を取得しました

しかし、私は自分の要素ListHashMapインスタンスではなく、Employerオブジェクトであることを期待しています。これがJackson本来の図書館ですね。私が間違っているところを訂正してもらえますか?

4

1 に答える 1

4

私はJacksonを使用していませんが、要求したもの、つまり文字列とオブジェクトのペアのHashMapを取得しているようです。おそらく、マップの「値」の部分をより明確にする必要がありますか?値はEmployeeオブジェクトの配列であるため、次のことを試してみてください。

TypeReference<HashMap<String, List<Employee>>> typeRef = new TypeReference<HashMap<String, List<Employee>>>() {};
HashMap<String, List<Employee>> o = mapper.readValue(from, typeRef);
于 2012-11-27T22:49:26.517 に答える