Вход JSON для запроса POST для вызова REST API - PullRequest
0 голосов
/ 07 октября 2019

Как мне преобразовать модель Person в соответствие с вводом?

Person p = new Person(name, age, amountInBank);

(имя в String, age в int и amountInBank в двойном значении)

Я хочу, чтобы мой JSON Input былследующим образом:

{  
 "ID": "H123",
 "list" : [
      {
       "name" : "ally",
        "age": 18,
         "amountInBank": 200.55
       }
  ]
}

В настоящее время мой код для вызова REST API:

JSONObject jsonInput= new JSONObject();
jsonInput.put("ID", "H123");

 //put in list input in JSON -> HELP NEEDED    

Resource resource = client.resource(URL HERE);

resource.contentType(MediaType.APPLICATION_JSON);
resource.accept(MediaType.APPLICATION_JSON);

ClientResponse cliResponse = resource.post(jsonInput);

Пробовал много способов, но не смог получить ожидаемый ввод для списка в формате JSON. Пожалуйста, помогите

Метод 1:

ArrayList<Map<String, Object>> list = new ArrayList<>();
list.add(p);
jsonInput.put("list" , list);

Метод 2:

JSONArray jsonArr = new JSONArray();
jsonArr.add(p);
jsonInput.put("list", jsonArr);    

Метод 3:

Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "ally");
map.put("age", 18);
map.put("amountInBank" : 255.55);
jsonInput.put("list", map);

Ответы [ 3 ]

0 голосов
/ 07 октября 2019

Сначала вы должны создать JSONObject и поставить ID, H123. Затем вам нужно создать еще один JSONObject, который будет принимать данные о человеке. передать другой JSONObject в JSONArray и путь JSONArray в JSONObjct. проверьте код

 public static void main(String[] args) {

    JSONObject jsonObject = new JSONObject(); // first json object
    jsonObject.put("ID", "H123"); put ids.

    JSONArray jsonArray = new JSONArray(); // prepear json array

    Person person = new Person("Ally", 18, 200.55); // create person object and populate it with data

   // JSONObject jsonObject = new JSONObject(person); you can pass your person directly to JSONObject constructor and it will deparse it base on your getter methods in person class. 

    JSONObject jsonObject1 = new JSONObject(); // then pass person data to Json object
    jsonObject1.put("name", person.getName());
    jsonObject1.put("age", person.getAge());
    jsonObject1.put("amountInBank", person.getAmountInBank());

    jsonArray.put(jsonObject1); // pass json object to json array

    jsonObject.put("list", jsonArray); // and pass json array to json object

    System.out.println();
    try (FileWriter file = new FileWriter("person.json")) {

        file.write(jsonObject.toString(5));
        file.flush();

    } catch (IOException e) {
        e.printStackTrace();
    }

}

Приведенный выше код выдаст

{
 "ID": "H123",
 "list": [{
      "name": "Ally",
      "amountInBank": 200.55,
      "age":  18
 }]

}

, если вам нужно сделать это из базы данных, большекак будет много людей. поместите объект person и объект json в какой-то цикл и заполняйте его сколько хотите. затем передайте его массиву json и массиву json объекту json, чтобы иметь много записей.

0 голосов
/ 07 октября 2019

Самая безопасная ставка - использовать хорошо известную библиотеку для сортировки, такую ​​как Jackson. Он может конвертировать ваш объект в формат JSON со следующим:

ObjectMapper mapper = new ObjectMapper(); //from Jackson library
Person p = new Person(name, age, amountInBank); //your POJO
String jsonString = mapper.writeValueAsString(p); //convert

Источник: https://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

Есть и другие альтернативы, это всего лишь личное предпочтение, так как Джексон оченьшироко используется и хорошо документирован.

Если вы пытаетесь получить список объектов массива JSON, просто замените объект Person на List<Person> и попробуйте выполнить маршалинг этого.

0 голосов
/ 07 октября 2019

Попробуйте код ниже

val listJsonArry = JsonArray()

var jsonObject = JsonObject()
jsonObject.add("name", "ally")
jsonObject.add("age", "18")
jsonObject.add("amountInBank", "200.55")

listJsonArry.add(jsonObject)   

PostData

var postjsonObject = JsonObject()
postjsonObject.add("ID", "H123")
postjsonObject.add("list", listJsonArry)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...