Преобразовать json в java класс

199
14 декабря 2021, 16:20

Как мне преобразовать такой вот json в Java класс с помощью GSON ?

{ "type": "success", "value": { "id": 61, "joke": "Chuck Norris once ate a whole cake before his friends could tell him there was a stripper in it.", "categories": [] } }

Как будет выглядеть этот класс ?

Answer 1

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

public class MyClass {
    public String joke;
    public int id;
    public String[] categories; 
    // Конструктор
    public MyClass(){
    }
}

далее просто выгружается в него из json

String jsonText = "{ \"id\": 61, \"joke\": \"Chuck Norris once ate a whole cake before his friends could tell him there was a stripper in it.\", \"categories\": [] }";
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
MyClass myClass = gson.fromJson(jsonText, MyClass.class);
System.out.println("GSON", "id: " + myClass.id + "\njoke: " + myClass.joke);

Не помню можно ли можно через GSON взять сразу объект value из строки, которая у вас имеется (вроде бы можно судя по информации), но определенно точно её можно достать другой библиотекой org.json.java-json.jar

будет это выглядеть примерно так:

import org.json.*;
public class Test {
    public static void main (String[] args) throws java.lang.Exception  {
        String json = "{ \"type\": \"success\", \"value\": { \"id\": 61, \"joke\": \"Chuck Norris once ate a whole cake before his friends could tell him there was a stripper in it.\", \"categories\": [] } }";
        JSONObject obj = new JSONObject(json);
        JSONObject myClassJSONObject = obj.getJSONObject("value");
    }
}
READ ALSO
Как убрать крайне правый знак в строке ;

Как убрать крайне правый знак в строке ;

Здраствуйте уважаемые форумчанеНа днях начал разрабатывать свой калькулятор на Java и не смог найти нужную в интернете информацию о том как...

89
Задать фон на всю ширину и высоту экрана

Задать фон на всю ширину и высоту экрана

Я новичок в верстке хотел узнать, тк

194