Wie Deserialisieren einer Map<String, Object> in POJO?

Ich habe eine Map<String, Object> enthält eine deserialisiert form von JSON. Ich möchte Deserialisieren diese in die Felder ein POJO.

Kann ich es über Gson durch serialisieren der Karte in einen JSON-string und dann Deserialisierung des JSON-string in der POJO, aber das ist ineffizient (siehe Beispiel unten). Wie kann ich dies durchführen, ohne den Zwischenschritt?

Die Lösung sollte vorzugsweise entweder Gson oder Jackson, als Sie bereits von dem Projekt.

Beispiel-code:

import java.util.HashMap;
import java.util.Map;

import com.google.gson.Gson;

public class Test {
    public static void main(String[] args) {
        Map<String, Object> innermap = new HashMap<String, Object>();
        innermap.put("number", 234);
        innermap.put("string", "bar");
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("number", 123);
        map.put("string", "foo");
        map.put("pojo2", innermap);

        Gson gson = new Gson();

        //How to perform this without JSON serialization?
        String json = gson.toJson(map);
        MyPojo pojo = gson.fromJson(json, MyPojo.class);

        System.out.println(pojo);
    }
}


class MyPojo {
    private int number;
    private String string;
    private MyPojo pojo2;

    @Override
    public String toString() {
        return "MyPojo[number=" + number + ", string=" + string + ", pojo2=" + pojo2 + "]";
    }
}
InformationsquelleAutor Sampo | 2014-08-22
Schreibe einen Kommentar