JSONObject supprimer vide paires de valeur
Voici mon Fichier Json:
{
"models":{},
"path":[
{
"path":"/web-profiles",
"operations":[
{
"type":"",
"responseMessages":[]
}
]
}
],
"produces":[]
}
Si les valeurs de clés sont vides (comprend [], "", {}). Comment puis-je supprimer ces paires de fichier Json.
- J'ai essayé d'utiliser JSONObject construire-dans des fonctions d'éliminer les paires. Mais, il ne fonctionne pas.
- J'ai essayé d'utiliser la méthode de chaîne à traiter ligne par ligne. Elle a eu de trop nombreux cas, je ne peut pas couvrir tous les cas dans mon code. (par exemple, la sous-clé "opérations", lorsque vous souhaitez supprimer toutes les valeur vide, cette clé(opérations) valeur paire devrait également être supprimé.)
Des idées?
doublons possibles de stackoverflow.com/a/23921129/2369266
OriginalL'auteur A Phototactic Coder | 2015-06-25
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez désérialiser
json
à unMap<String, Object>
.Deuxièmement, la boucle de la carte d'entrée pour trouver ce qui touche a la valeur null ou ce qui touche a de la valeur est l'instance de
ArrayList
mais vide et le retirer de laMap
.Dernier, sérialiser les
Map
àjson
.Essayez ce code:
vous pouvez rechercher Gson ou voir ici github.com/google/gson
OriginalL'auteur codeaholicguy
Si vous utilisez javax.api api:
OriginalL'auteur saka1029
Regex solution
Vous pouvez utiliser les REGEX pour supprimer toute la ligne à partir de vos données qui contient une "",[],ou {} avant de l'analyser avec le JSONParser.
La regex pour quelque chose comme cela pourrait ressembler. Gardez à l'esprit que vous pourriez avoir à ajuster le caractère de nouvelle ligne en fonction de votre système d'exploitation
De compte pour une instance où les données JSON est comme suit
La première fois que vous exécutez que replaceAll il entraînera avec
Maintenant nous avons un vide JSONObject à l'intérieur de la "opérations" JSONArray. Donc, ce replaceAll fonction doit être appelée de nouveau jusqu'à ce que la Chaîne JSON n'a pas tous les changements de son état précédent.
Gardez à l'esprit que si vous utilisez des fonctions comme readLine() pendant la saisie de données, il peut supprimer le caractère de saut de ligne qui fera de cette méthode de ne pas fonctionner. Afin de résoudre ce remplacer votre ligne de lecture avec ce.
Voici un petit programme que j'ai écrit que le fait de la suppression effective de vide objets json de la Chaîne d'origine.
OriginalL'auteur egtoney
Ne sais pas, construire-dans des fonctions, mais vous pouvez essayer ce
Que de nettoyer votre objet json de champ vide(il fonctionne de manière récursive). Donc, si le JSON ressemble à ceci:
champ "opérations" sera également supprimé.
remarque : JSONArray.supprimer seulement pour les API 19 ci-dessus
OriginalL'auteur fchristysen
En Scala, avec
org.json
bibliothèque, peuvent être facilement converties en Java (bien qu'un peu plus clair). De manière récursive supprimenull
s et des objets vides/tableaux:OriginalL'auteur Leon Stein