J'ai une chaîne de caractères au format Json, mais aucune des clés ou valeurs n'est entourée de guillemets. Par exemple, j'ai ceci :
String json = "{name: Bob, state: Colorado, Friends: [{ name: Dan, age: 23 }, {name: Zane, age: 24 }]}"
Je veux que cela devienne une carte qui ressemble à ceci:
Map friend1Map = new HashMap<>();
friend1Map.put("name", "Dan");
friend1Map.put("age", 23);
Map friend2Map = new Hashmap<>();
friend2Map.put("name", "Zane");
friend2Map.put("age", 24);
Map newMap = new HashMap<>();
newMap.put("name", "Bob");
newMap.put("state", "Colorado");
newMap.put("Friends", Arrays.asList(friend1Map, friend2Map));
J'ai essayé les deux méthodes suivantes :
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(json, new TypeReference>() {});
Cela provoquera une erreur, en disant :
Caractère inattendu ('n') : on attendait des guillemets pour commencer le nom du champ
Ensuite, j'ai essayé de changer la configuration du mapper:
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
mapper.readValue(json, new TypeReference>() {});
Mais cela a provoqué une erreur en disant :
com.fasterxml.jackson.core.JsonParseException: Jeton non reconnu 'Bob' : on attendait ('true', 'false' ou 'null')
à [Source: {name: Bob, state: Colorado, Friends: [{ name: Dan, age: 23 }, {name: Zane, age: 24 }]}; line: 1, column: 11]
Existe-t-il un moyen d'obtenir cette carte lorsque des guillemets ne sont pas inclus dans la chaîne json?