Как сгенерировать json с помощью lombok + gson с помощью метода builder ()? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть json как это, как я могу сгенерировать его, используя lombok expression + gson library? Он представляет собой смесь массива и списка. Есть ли в наличии готовый инструмент?

{
  "transactions": [
    {
      "transactionIds": 123456,
      "test": 3000,
      "amount": {
        "currency": "USD",
        "value": 10
      }
    }
  ]
}

1 Ответ

1 голос
/ 26 мая 2020

Определите значения, как вы всегда делаете, и, скорее, сгенерируйте геттеры / сеттеры, которые вы бы добавили атрибут @Data, Полный код ниже вместе с зависимостями

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;

public class Stack32 {

public static @Data class Amount {

    private String currency;
    private int value;

}

public static @Data class Child {

    private int transactionIds;
    private int test;
    private Amount amount;
}

public static @Data class Parent {

    private List<Child> transactions = new ArrayList<Child>();

}

public static void main(String[] args) throws JsonProcessingException {

    Amount a1 = new Amount();
    a1.setCurrency("USD");
    a1.setValue(10);

    Child a2 = new Child();
    a2.setTransactionIds(123456);
    a2.setTest(3000);
    a2.setAmount(a1);

    Parent a3 = new Parent();
    a3.getTransactions().add(a2);

    ObjectMapper mapper = new ObjectMapper();

    String payload = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(a3);

    System.out.println(payload);

}
}

Depdencies:

<dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
...