Java JSON -Jackson - Éléments Imbriqués
Ma chaîne JSON est imbriqué valeurs.
Quelque chose comme
"[{"listed_count":1720,"status":{"retweet_count":78}}]"
Je veux la valeur de la retweet_count
.
Je suis l'aide de Jackson.
Le code ci-dessous sorties "{retweet_count=78}
" et pas 78
. Je me demande si je peux obtenir imbriqués les valeurs de la sorte de façon de PHP est-il je.e status->retweet_count
. Merci.
import java.io.IOException;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
public class tests {
public static void main(String [] args) throws IOException{
ObjectMapper mapper = new ObjectMapper();
List <Map<String, Object>> fwers = mapper.readValue("[{\"listed_count\":1720,\"status\":{\"retweet_count\":78}}]]", new TypeReference<List <Map<String, Object>>>() {});
System.out.println(fwers.get(0).get("status"));
}
}
- C'est tout à fait normal: va;ue de "statut" est une Carte n'est-ce pas? Vous avez juste besoin d'appeler " get (),' une fois de plus avec "retweet_count". Cependant, je suis d'accord avec l'une des réponses que suggère l'utilisation de
readTree()
au lieu de cela, obtenir unJsonNode
-- beaucoup plus facile à traverser.
Vous devez vous connecter pour publier un commentaire.
Essayer quelque chose comme ça. Si vous utilisez JsonNode votre vie va être plus facile.
Si vous connaissez la structure de base de données que vous êtes à la récupération, il est logique de les représenter correctement. Vous obtenez toutes sortes de subtilités, comme le type de la sécurité 😉
Vous pouvez probablement le faire
System.out.println(fwers.get(0).get("status").get("retweet_count"));
Edit 1:
Changement
à
Et puis ne
System.out.println(fwers.get(0).get("status").get("retweet_count"));
Vous n'avez pas de Carte de paires, vous avez une Carte de
<String, Map<String, Object>>
paires.Edit 2:
Bien que je l'obtenir. Si vous avez une liste de cartes. Et dans la première carte dans la liste, vous avez un kv paire dont la valeur est un entier, et un autre kv paire dont la valeur est une autre carte. Quand vous dites que vous avez une liste de cartes de cartes, il se plaint parce que le kv paire avec la valeur int n'est pas une carte (c'est juste un int). Donc, soit vous devez faire tous vos kv paires de cartes (changement de type int à la carte) et ensuite utiliser mes modifications ci-dessus. Ou vous pouvez utiliser votre code d'origine, le cast est l'Objet d'une Carte quand vous savez que c'est une Carte.
Donc, essayez ceci:
Can not deserialize instance of java.util.LinkedHashMap out of VALUE_NUMBER_INT token