0
votes

Je souhaite combiner plusieurs objets JSON dans un seul tableau

J'essaie de combiner plusieurs objets JSON dans un seul tableau JSON et peut-être de filtrer sur le nom des données (température, pression, altitude).

J'ai essayé d'utiliser JSON-Simple et Java mais je ne peux pas le faire fonctionner.

Voici les éléments de JSON:

L'entrée que je veux convertir:

{
  "temperaturData": [
      {"temperature": -12, "sendtimes": 10000},
      {"pressure" : 1000, "sendtimes" : 10001},
      {"altitude" : 100.7, "sendtimes" : 10002},
  ]
}

Comment je le veux après la conversion:

{"temperature" : -12, "sendtimes" : 10000}
{"pressure" : 1000, "sendtimes" : 10001}
{"altitude" : 100.7, "sendtimes" : 10002}`

Je n'ai aucune idée de comment faire cela, merci à tous ceux qui peuvent m'aider!


3 commentaires

Vérifiez ceci: stackoverflow .com / questions / 16495702 /…


Merci pour votre réponse, mais dans cette question, l'entrée est déjà formatée, j'ai juste un fichier avec ces trois objets


Deux questions: le fichier d'entrée est-il tel quel et n'est-il pas entouré par {} ou [] ? Est-ce {"temperature": -12, "sendtimes": 10000} sur une seule ligne et toutes les autres données individuelles {} incluses dans des lignes uniques?


3 Réponses :


0
votes

Ce que vous voulez réaliser est assez simple. J'utilise JavaScript, la même chose peut être obtenue avec n'importe quel autre langage utilisant une structure de données similaire. Ce que vous voulez faire, c'est créer un tableau et ajouter les valeurs à ce tableau.

var tempData = {"temperaturData" : []}
tempData["temperaturData"].push({"temperature": -12, "sendtimes": 10000})
tempData["temperaturData"].push({"pressure" : 1000, "sendtimes" : 10001})
tempData["temperaturData"].push({"altitude" : 100.7, "sendtimes" : 10002})
JSON.stringify(tempData)


2 commentaires

Merci, mais comment faire cela si l'ensemble de données ne cesse de s'agrandir, donc chaque fois que j'exécute le code, il le convertit, quel que soit le nombre d'objets


vous pouvez le convertir en une fonction qui ajoute les données à l'objet existant



1
votes

Utilisation de la bibliothèque JSON

JSONArray arr = new JSONArray();
JSONObject obj = new JSONObject();
obj.put("temperature", "-12");
obj.put("sendtimes", "1000");

arr.put(obj);
obj = new JSONObject();
obj.put("pressure", "1000");
obj.put("sendtimes", "1001");

arr.put(obj);

JSONObject finalObj = new JSONObject();
finalObj.put("temperaturData", arr);
System.out.println(finalObj);

Cependant ce que je suggère, c'est que vous devriez également mieux attribuer des clés aux tableaux internes donnés, ce qui rendra l'accès facile et sans bogue.


0 commentaires

0
votes

La bibliothèque JSON mentionnée par Jatin Asija est une bibliothèque JSON très cool et simple que vous pouvez définitivement utiliser pour obtenir ce que vous voulez. Cependant, la norme de facto pour travailler avec JSON en java est la bibliothèque Jackson JSON également connue sous le nom de "FasterXML / jackson". Tout ce que vous aurez à faire est d'utiliser la classe ObjectMapper et ses méthodes readValue () et writeValueAsString (Object value) pour faire ce que vous voulez. Voici un tutoriel pour ObjectMapper et voici les dépendances Maven dont vous pourriez avoir besoin pour l'utiliser:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

Voici javadoc pour ObjectMapper


4 commentaires

La classe ObjectMapper n'est-elle pas sur la façon de sérialiser des objets Java en JSON et de désérialiser la chaîne JSON en objets Java? et même si nous pouvons l'utiliser pour accomplir la tâche mentionnée ci-dessus, mais n'est-ce pas la rendre très complexe et fastidieuse?


Jatin - oui, vous avez raison, ObjectMapper est destiné à la sérialisation et à la désérialisation des classes Java en JSON. Mais votre solution est la même: avec la bibliothèque JSON, vous dé-sérialisez les chaînes JSON, puis effectuez les opérations sur les objets java, puis les sérialisez à nouveau en chaînes JSON. La bibliothèque JSON est très simple et pratique pour des opérations simples (également mon premier choix de travailler avec JSON lorsque je viens de commencer). Mais Jackson JSON est de loin plus puissant et nettement plus rapide, également très étroitement intégré à la sérialisation Spring for JSON derrière les scienes. C'est donc finalement un meilleur choix.


oui, je sais que c'est tout à fait la même chose, mais dans le cas de ObjectMapper , il faudra créer un haricot supplémentaire, mais avec org.json , on peut simplement utiliser n'importe quelle clé et valeur, et comme avec jackson, il analyse d'abord JSON puis le mappe au bean, ce qui le rend plus lent que HashMap qui est utilisé dans org.json, mais si quelqu'un souhaite utiliser le bean , alors jackson est mieux, mais pour les détails mentionnés ci-dessus, cela ne semble pas être le cas.


Je suppose que oui Jatin. Alors laissez l'OP décider lequel il veut