2017-03-06 1 views
2

Ich habe folgende JSON-Struktur in den kommenden,Java Native JSON api für das Parsen von

{ 
    "name": "product new", 
    "brand": { 
    "id": 1 
    }, 
    "category": { 
    "id": 1 
    } 
} 

I

jsonObject = Json.createReader(httpServletRequest.getInputStream()).readObject(); 
jsonObject.getString("name") 

Fehler extrahieren:

jsonObject.getInt("brand.id") 
jsonObject.getInt("category.id") 

Ich bin mit Java API für JSON.

bearbeiten Wenn ich

System.out.println(jsonObject.get("brand")); 
// response {"id":1} 

System.out.println(jsonObject.get("brand.id")); 
// null 

http://www.oracle.com/technetwork/articles/java/json-1973242.html

+0

'jsonObject.getInt (“ brand.id ")' ist kein Fehler. Was ist deine eigentliche Fehlermeldung? – shmosel

+0

es kommt als null – user2727195

+0

Was haben Sie in der Dokumentation gesehen, um Ihre Syntax zu unterstützen? Warum benutzt du 'getJsonObject (" brand ") nicht? GetInt (" id ")'? – shmosel

Antwort

2

Zugang Ich glaube nicht die API unterstützt Sie Ausdrücke verschachtelt verwenden. Sie werden das übergeordnete Objekt, und dann das spezifische Feld zugreifen müssen:

System.out.println(jsonObject.getJsonObject("brand").getInt("id")); 

Oder können Sie eine API verwenden, die einen Pfadausdruck akzeptiert, wie Jackson:

JsonNode node = new ObjectMapper().readTree(httpServletRequest.getInputStream()); 
System.out.println(node.at("/brand/id").asInt());