Lire Plusieurs Objets JSON avec Java
J'ai besoin de lire un fichier JSON en Java avec la structure suivante:
{"id_user":"10","level":"medium","text":"hello 10"}
{"id_user":"20","level":"medium","text":"hello 20"}
{"id_user":"30","level":"medium","text":"hello 30"}
Merci!.
[POST ÉDITÉ]
J'ai ce code mais lu que le premier Objet JSON, j'ai besoin de lire les trois objets un par un.
private void loadJSONFile(){
FileReader fileReader = new FileReader(pathFile);
try (JsonReader jsonReader = new JsonReader(fileReader)) {
jsonReader.beginObject();
while (jsonReader.hasNext()) {
String name = jsonReader.nextName();
if (name.equals("filter_level")) {
System.out.println(jsonReader.nextString());
} else if (name.equals("text")) {
System.out.println("text: " + jsonReader.nextString());
} else {
jsonReader.skipValue();
}
}
jsonReader.endObject();
jsonReader.close();
}
}
merci!
Avez-vous un peu de code que vous avez essayé, mais n'est-ce pas de travail? stackoverflow.com/help/how-to-ask
Java API JSON
Note de côté: ce n'est pas JSON valide.
Ces 3 différents objets JSON. Si vous dites un fichier JSON, puis tous ces objets doivent être emballés dans un seul Objet JSON, sinon il n'est pas valide.
Il est absolument valide, d'avoir plus d'un JSON structure de données dans un seul fichier. L'exemple donné est donc légal et tout décent JSON analyseur doit être capable de lire plusieurs JSON structures à partir d'un flux de fichier / / ressources. Pour ceux qui sont dans le doute - s'il vous plaît aller de l'avant et de lire ECMA-404. Nulle part dans ce document, vous trouverez "fichier", "ressource", "flux", "document" dans le contexte de la structure de données JSON notation. Ainsi, la structure de données est une notion indépendante de stockage des questions. Ainsi, vous pouvez bien sûr avoir plusieurs structures dans un seul fichier. Période.
Java API JSON
Note de côté: ce n'est pas JSON valide.
Ces 3 différents objets JSON. Si vous dites un fichier JSON, puis tous ces objets doivent être emballés dans un seul Objet JSON, sinon il n'est pas valide.
Il est absolument valide, d'avoir plus d'un JSON structure de données dans un seul fichier. L'exemple donné est donc légal et tout décent JSON analyseur doit être capable de lire plusieurs JSON structures à partir d'un flux de fichier / / ressources. Pour ceux qui sont dans le doute - s'il vous plaît aller de l'avant et de lire ECMA-404. Nulle part dans ce document, vous trouverez "fichier", "ressource", "flux", "document" dans le contexte de la structure de données JSON notation. Ainsi, la structure de données est une notion indépendante de stockage des questions. Ainsi, vous pouvez bien sûr avoir plusieurs structures dans un seul fichier. Période.
OriginalL'auteur Yuan | 2014-08-17
Vous devez vous connecter pour publier un commentaire.
Je sais qu'il a été presque un an pour ce post 🙂 mais je suis en train de reposer à nouveau comme une réponse parce que j'ai eu ce problème même comme vous le Yuan
J'ai ce text.txt fichier - je sais que ce n'est pas valide d'un tableau Json - mais si vous regardez, vous verrez que chaque ligne de ce fichier est un objet Json dans son cas à lui seul.
Maintenant je veux lire chaque ligne de ce qui précède et d'analyser les noms de "Sensor_ID" et "Date" en format Json. Après de longues recherches, j'ai le texte suivant:
De l'essayer et de regarder dans la console pour voir le résultat. J'espère que cela aide.
oui, mais vous pouvez insérer "\r\n" après chaque écriture de l'objet json dans le text.txt fichier, donc vous assurer que chaque ligne a un seul objet
Le problème, c'est l'inverse, si chaque json est sur plusieurs lignes.
Dans ce cas, je vais penser à essayer de faire de chaque objet json dans exactement une ligne. le codage de ligne de texte wrapper de "{" à "}" peut également être une solution à ce problème. En fait, j'ai une sortie d'objets json fichier, comme ils sont décrits dans la question et je voulais les lire comme ils sont 🙂 c'est pourquoi j'ai jugé utile de le publier.
n'importe quelle source code formatter pour JSON permet de rendre votre code de pause. Souhaitez-vous en tant que client d'accepter un tel code? Je ne voudrais pas.
OriginalL'auteur halim
C'est un exemple de travail (et testé) avec gson-2.8.0. Il accepte un arbitraire séquence d'objets JSON sur un flux d'entrée. Et, bien sûr, elle n'impose pas de restrictions sur la façon dont vous avez formaté votre entrée:
OriginalL'auteur whaefelinger
Je pense que ce que tu veux dire, c'est votre Json chaînes de caractères sont stockées dans un fichier texte et vous avez besoin de lire dans une objets Json. Si c'est le cas, utilisez BufferedReader ou un Scanner pour lire le fichier ligne par ligne et d'analyser chaque ligne à un objet Json à l'aide de json simple
JsonReader est utiliser pour Lire Un Objet Json. Utiliser le Scanner ou BufferedReader de Lire le Fichier ligne Par Ligne comme une Chaîne de caractères, puis de l'Analyser pour un Objet Json.Voici un Exemple
votre avis donné est très discutable, ou plutôt d'une mauvaise pratique. Parce que vous comptez sur le fait qu'une seule ligne ne contient qu'une seule structure de données JSON. Maintenant l'image de ce qui se passera si quelqu'un va le format de l'entrée? Tel un simple changement de casser votre solution?
OriginalL'auteur prasadmadanayake
comprennent les suivantes maven dependency:
puis écrire votre code comme ci-dessous:
OriginalL'auteur Victor
Je sais que les deux option pour lire JSON.
JSON Simple son bon pour les petites JSON résultats.
Mais GSON est très utile pour les grands résultats json. Parce que vous pouvez définir la forme d'Objet dans GSON.
Sapins un json.jar
Utilisation :
Deuxième gson.jar
Utilisation:
OriginalL'auteur hurricane
Mon format des données est :
J'ai essayé celui-ci et il fonctionne :
OriginalL'auteur ojus kulkarni
La bonne façon de travailler par le biais de ce fichier JSON est:
Essayez d'utiliser XStream si vous utilisez une application autonome. Il analyse JSON dans les objets, dans un clin d'œil.
OriginalL'auteur Neill Lima
J'ai utilisé le code ci-dessous et sa fonctionne très bien.
JSON:
{
]
}
OriginalL'auteur Aditya
À l'aide de gson à lire plusieurs objets de flux.
Avec gson-2.8.2, j'ai dû appeler cela: reader.setLenient(true);
Cela a été suggéré explicitement par la trace de la pile, lorsque je l'ai fait, le code a fonctionné parfaitement:
...
Ok, il n'y a pas while(true). C'est en (est.() > 0), voir la variable utilisée pour créer le JsonReader
OriginalL'auteur armagedescu
conserver les données à l'intérieur de [ ] comme
[{"id_user":"10","level":"medium","text":"hello 10"}
{"id_user":"20","level":"medium","text":"hello 20"}
{"id_user":"30","level":"medium","text":"hello 30"}]
à l'intérieur du fichier
de sorte qu'il devient une liste, vous pouvez l'utiliser JSONArray . la façon dont je l'ai écrit comme suit
}
La sortie que je vous est
text---hello 10
id_user---10
level---medium
text---hello 20
id_user---20
level---medium
text---hello 30
id_user---30
level---medium
Salut @AMITAVA, j'ai utilisé votre code dans mon projet, et ça fonctionne, mais sa viens pas de la sortie en bon ordre, comme vous le voyez, il imprime Niveau moyen au lieu de l'Id. J'ai essayé de corriger le bug, mais je n'ai pas pu, j'espère que vous pouvez aider à le résoudre. merci
Ba-ali , Bonjour désolé, j'ai vu ce message trop tard. De toute façon pour le type d'objet qui contient des clés et des valeurs, nous obtenons toujours les valeurs de la clé. Pourquoi l'ordre est important ici? De toute façon, j'ai remarqué une faille dans mon précédent code. On doit attraper la clé,des valeurs dans une Carte à la place à l'intérieur de l'itération de la boucle. J'ai édité ma réponse en conséquence.
OriginalL'auteur amitava