Question

J'essaie de générer la sortie JSON suivante en utilisant les LIB Java Net.Sf.json mais n'a pas réussi.

{"data": [[1, 1, "texte"], [2, 2, "texte"], [3, 0, "texte"], [5, 2, "texte"]], "Label ":" Première série "}

J'ai lu sur ces forums GSON est mon meilleur pari à l'avenir. Quelqu'un peut-il fournir un exemple de la façon de générer ce JSON à l'aide de GSON ou d'une autre bibliothèque basée sur Java appropriée.

Merci d'avance

Était-ce utile?

La solution

J'aime çahttp://www.json.org/javadoc/org/json/jsonobject.html de http://json.org/java/

et JSONArray.

avec ces 2 objets:

JSONArray inner = new JSONArray()
inner.add(1);inner.add("text");
JSONObject outer = new JSONObject();
outer.put("data",inner);
outer.put("label", "stuff");

String out = outer.toString()

Autres conseils

Gon

GSON est une bibliothèque Java qui peut être utilisée pour convertir les objets Java en sa représentation JSON. Il peut également être utilisé pour convertir une chaîne JSON en un objet Java équivalent. GSON peut travailler avec des objets Java arbitraires, y compris des objets préexistants dont vous n'avez pas le code source.

Il existe quelques projets open source qui peuvent convertir des objets Java en JSON. Cependant, la plupart d'entre eux exigent que vous placiez des annotations Java dans vos classes quelque chose que vous ne pouvez pas faire si vous n'avez pas accès au code source. La plupart ne soutiennent pas non plus pleinement l'utilisation des génériques Java. GSON considère ces deux objectifs de conception très importants.

import com.google.gson.Gson;

class Person {
  private int age = 10;
  private String name = "jigar";
}

Person obj = new Person();
Gson gson = new Gson();
String json = gson.toJson(obj);

http://json.org/java/

import org.json.JSONObject;

...
...

JSONObject json = new JSONObject();
json.put("city", "Mumbai");
json.put("country", "India");

...

String output = json.toString();  

C'est assez facile en utilisant un objet Java comme celui-ci:

public class GsonTest {
  private List<DataItem> data;
  private String label;

  public GsonTest() {} // for Gson

  public GsonTest(List<DataItem> data, String label) {
    this.data = data;
    this.label = label;
  }
  // ...
}

public class DataItem {
  private int val1;
  private int val2;
  private String text;

  public DataItem() {} // for Gson

  public DataItem(int val1, int val2, String text) {
    this.val1 = val1;
    this.val2 = val2;
    this.text = text;
  }
  // ...
}

Étant donné que votre format JSON utilise un tableau plutôt qu'un objet pour chaque élément de données (un objet aurait plus de sens en fonction de votre échantillon), vous devez ajouter un gestionnaire personnalisé pour sérialiser et désérialiser DataItems vers et depuis JSON Arrays.

public class DataItemConverter implements JsonDeserializer<DataItem>,
    JsonSerializer<DataItem> {

  public DataItem deserialize(JsonElement json, Type typeOfT, 
      JsonDeserializationContext context) throws JsonParseException {
    JsonArray array = json.getAsJsonArray();
    int val1 = array.get(0).getAsInt();
    int val2 = array.get(1).getAsInt();
    String text = array.get(2).getAsString();
    return new DataItem(val1, val2, text);
  }

  public JsonElement serialize(DataItem src, Type typeOfSrc, 
      JsonSerializationContext context) {
    JsonArray array = new JsonArray();
    array.add(new JsonPrimitive(src.val1));
    array.add(new JsonPrimitive(src.val2));
    array.add(new JsonPrimitive(src.text));
    return array;
  }
}

Alors il vous suffit d'enregistrer ce convertisseur lorsque vous créez votre Gson Instance et vous êtes prêt à partir! Depuis notre DataItem Le convertisseur gère également la désérialisation, vous pourrez désérialiser le JSON généré comme un List<GsonTest> aussi bien.

public static void testSerialization() {
  List<DataItem> data = new ArrayList<DataItem>();
  data.add(new DataItem(1, 1, "Text"));
  data.add(new DataItem(2, 2, "Text"));
  data.add(new DataItem(3, 0, "Text"));
  data.add(new DataItem(5, 2, "Text"));

  GsonTest test = new GsonTest(data, "First Series");
  List<GsonTest> list = new ArrayList<GsonTest>();
  list.add(test);
  Gson gson = new GsonBuilder()
      .registerTypeAdapter(DataItem.class, new DataItemConverter())
      .create();
  System.out.println(gson.toJson(list));
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top