2016-04-21 5 views
0

Hier ist der aktuelle Stil, den ich für einfache Nachrichten habe, mit Jackson:Was ist der kürzeste Weg, um eine Java-Klasse zu schreiben, um ein einfaches JSON-Dokument mit Deserialisierung darzustellen?

public class FooRequest { 
    public final String foo; 
    public final int bar; 

    @JsonCreator 
    public FooRequest(
      @JsonProperty("foo") String foo, 
      @JsonProperty("bar") int bar) { 
     this.foo = foo; 
     this.bar = bar; 
    } 
} 

Gibt es eine Klasse Anmerkung gibt, die das Kesselblech Konstruktor behandelt?

+0

Ich denke, dass dieser Blogbeitrag relevant ist, Dag, [Jackson ohne Anmerkungen] (https://manosnikolaidis.wordpress.com/2015/08/25/jackson-without-annotations/). – DavidS

+0

Ich denke, du solltest _in deiner Frage_ (nicht Kommentare) genau erklären, was du willst. Möchten Sie Objekte serialisieren können, die keine Konstruktoren haben, oder möchten Sie Ihre Klassen oder etwas anderes nicht kommentieren müssen? – DavidS

Antwort

0

Eine schnelle Google-Suche brachte dies:

Creating a json object using jackson

Sieht aus wie Sie den Aufbau mit JsonNodeFactory verarbeiten kann.

final JsonNodeFactory factory = JsonNodeFactory.instance; 

Haben Sie das gesucht?

0

Sie können versuchen, Jackson annotation zu verwenden. Die Jackson-Annotation @JsonCreator wird verwendet, um Jackson mitzuteilen, dass das Java-Objekt einen Konstruktor (einen "Ersteller") hat, der die Felder eines JSON-Objekts mit den Feldern des Java-Objekts vergleichen kann.

Betrachten wir das folgende JSON-Objekt, das wir deserialisieren möchten.

{ 
    "name":"Mr.Bond", 
    "age":"30" 
} 

Sie können die Nachricht entordnen durch den Konstruktor mit @JsonCreator mit Anmerkungen versehen und mit der @JsonProperty

public class UserProfileCreator { 
    public int age; 
    public String name; 

    @JsonCreator 
    public UserProfileCreator(
     @JsonProperty("age") int age, 
     @JsonProperty("name") String name) { 
      this.age = age; 
      this.name = name; 
    } 
} 

Wie wird es funktionieren?

Lassen Sie uns ein kleines Testprogramm schreiben.

@Test 
public void deserialize() 
    throws JsonProcessingException, IOException { 

    String json = "{"age":30,"name":"Mr.Bond"}"; 
    UserProfileCreator obj = new ObjectMapper().reader(UserProfileCreator.class).readValue(json); 
    assertEquals("Mr.Bond", obj.name); 
} 
0

Google's gson library es nicht erforderlich, Anmerkungen oder Konstrukteure zu verwenden:

import com.google.gson.Gson; 
import java.util.Date; 
public class Test { 
    public static void main(String[] args) { 
     Gson gson = new Gson(); 

     String toJson = gson.toJson(new Thing()); 
     System.out.println(toJson); 
     // prints {"appleType":"granny","date":"Apr 21, 2016 10:31:17 AM","numPies":6} 

     Thing fromJson = gson.fromJson(toJson, Thing.class); 
     System.out.println(fromJson); 
     // prints [email protected] 
    } 
} 
class Thing { 
    String appleType = "granny"; 
    Date date = new Date(); 
    int numPies = 6; 
} 

Jackson kann ähnliche Funktionen, aber ich weiß es nicht.

Verwandte Themen