Как создать JAVA объект из JSON строки? - PullRequest
0 голосов
/ 27 января 2020

Я создаю приложение, которое отправляет GET-запрос к API и получает JSON, и мне нужно создать класс, содержащий информацию. Вот что я пробовал:

package apiwebapprequest;

import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;


public class APIWebAppRequest {


public static void main(String[] args) throws IOException {
    Gson gson = new Gson();
    Object obj = new Object();

    try {   
 URL url = new URL("xxx");
 URLConnection yc = url.openConnection();
 BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
 String inputLine;

 while((inputLine = in.readLine())!= null){
     System.out.println(inputLine);

     in.close();
     gson.toJson(obj,inputLine);




 }

 }catch(Exception e) {System.out.println(e);}



}

}

Это класс объектов:

package apiwebapprequest;

public class Object {


private String cif;
private String data_creare;

public String getCif() {
    return cif;
}

public void setCif(String cif) {
    this.cif = cif;
}

public String getData_creare() {
    return data_creare;
}

public void setData_creare(String data_creare) {
    this.data_creare = data_creare;
}




}

В строке 29 -> gson.to Json (obj, inputLine); это дает мне ошибку. Подскажите, пожалуйста, как это сделать? Я не могу найти, как это исправить или изменить другим способом, чтобы он работал

Идея состоит в том, что я выхожу, когда я делаю запрос в inputLine У меня есть json, и я хочу сохранить поля отдельно в Свойства объекта

Ответы [ 4 ]

1 голос
/ 27 января 2020

Вы можете использовать следующий способ.

gson.toJson(obj); // is used to convert object to JSON

, если вы хотите преобразовать JSON в Java Объект, тогда вы можете использовать

gson.fromJson(json, Car.class);

Пример.

     public class Car {
            public String brand = null;
            public int    doors = 0;
   // add getter and setter

        }

String json = "{\"brand\":\"Jeep\", \"doors\": 3}";

Gson gson = new Gson();

Car car = gson.fromJson(json, Car.class);
1 голос
/ 27 января 2020

Сначала вы должны прочитать весь ответ в while l oop, а затем преобразовать в json после окончания while l oop. Вы можете изменить свой код что-то вроде

StringBuilder sb = new StringBuilder();
while((inputLine = in.readLine())!= null){
     System.out.println(inputLine);
     sb.append(inputLine +"\n");
     in.close();
 }
gson.toJson(obj,sb.toString());
0 голосов
/ 27 января 2020

Вы можете использовать класс Джексона com.fasterxml.jackson.databind.ObjectMapper.

Вот как вы можете проанализировать json для класса:

ObjectMapper objectMapper = new ObjectMapper();
MyClass myClass = objectMapper.readValue(json, MyClass.class);
0 голосов
/ 27 января 2020

Попробуйте использовать gson.toJson(obj,inputLine) через некоторое время l oop.

Предположим, что json равно

{
"foo":"bar",
"foo1":"bar1"
}

Каждая строка недопустима JSON. Следовательно, вам необходимо сначала прочитать всю строку, а затем проанализировать ее.

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