Обрабатывает объекты json, не зная имени атрибута и количества атрибутов - PullRequest
0 голосов
/ 25 мая 2018

Я пытался обработать запрос, используя приведенный ниже пример:

"type" : "NEWS",
"content" : {
    "title" : "Test Message",
    "message" : "This is a message",
    "buttonCaption" : "Click me"
}

Или, может быть:

"type" : "NEWS",
"content" : {
    "title" : "Test Message",
    "message" : "This is a message",
    "buttonCaption" : "Click me",
    "anotherField" : "values"
}

Иногда, может быть:

"type" : "NEWS",
"content" : {
    "name" : "Test Message",
    "anotherProperties" : "This is a message",
    "ohMyGodAnotherFields" : "Click me"
}

Так что я не могусоздать конкретный объект.Как я могу справиться с этим в контроллере Spring?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вы должны получить ключи, используя java.util.Iterator.

JSONObject jsonObj = new JSONObject(JSONString);
Iterator keys = jsonObj.keys();
while (keys.hasNext()) {
     String keyStr = keys.next().toString();
     String value = jsonObj.getStrin(keyStr);
}

или Вы можете попробовать это:

JSONObject jsonObj = new JSONObject(JSONString);
if (jsonObj.has("key")) {
    String value = jsonObj.getString("key");
}
0 голосов
/ 25 мая 2018

Вы можете использовать JsonNode в своем классе ресурсов, например:

public class Foo {
    private String type;
    private JsonNode content;
    // ...
}

и принять его как @RequestBody в вашем контроллере:

@PostMapping
public ResponseEntity<Foo> foo(@RequestBody Foo foo){
   // do something with your foo...
}

Вы можете прочитать больше о JsonNode здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...