使用 Java 将 JSON 转换为 POJO 并赋值
Posted
技术标签:
【中文标题】使用 Java 将 JSON 转换为 POJO 并赋值【英文标题】:Converting JSON to POJOs Using Java and assign values 【发布时间】:2021-10-27 07:08:21 【问题描述】:我有一些 JSON 对象,我需要将它们更改为 JAVA 类并分配给定值。
"Summary":
"AccountSummary":
"Account_number": "324d",
"Account_name": "John"
,
"Transaction":[
"Date": "2021-08-21",
"Amount": "20,000"
,
"Date": "2021-08-23",
"Amount": "5,000"
]
这些是我当前的编码,
//The account summary class with assigned value
public class AccountSummary
@JsonProperty("Account_number")
public String account_number = "324d";
@JsonProperty("Account_name")
public String account_name = "John";
//Transaction class. I want to know how I can assign values
public class Transaction
@JsonProperty("Date")
public String date;
@JsonProperty("Amount")
public String amount;
// Summary class
public class Summary
@JsonProperty("AccountSummary")
public AccountSummary accountSummary;
@JsonProperty("Transaction")
public List<Transaction> transaction;
由于我已为 AccountSummary 分配了值,因此我还需要为 Transaction 类分配值。但好像它是一个列表,我不知道如何分配。请帮忙。
【问题讨论】:
你可以使用 GSON 直接将 JSON 转换为 POJO ***.com/questions/31073624/… 为什么不直接使用这个工具呢? jsonschema2pojo.org 为什么要在代码中静态赋值,而不是用Jackson解析Json文件,让它赋值呢?如果你真的想这样做,你可以使用List.of()
方法将值静态分配给一个列表,但同样,它看起来很奇怪。
@MatteoNNZ 我无法说出原因,因为它是一个客户项目。我真的需要手动赋值。
@SamridhTuladhar 该网站对我不起作用。当我选择预览时,它显示一个空的弹出窗口
【参考方案1】:
你可以这样做, 首先,创建一个具有以下依赖项的 maven 项目,1.杰克逊核心2。杰克逊数据绑定3.杰克逊注解 确保所有三个依赖项都在同一个版本中。
然后为您的 POJO 对象创建单独的 model
类
public class AccountSummary
@JsonProperty("Account_number")
public String account_number;
@JsonProperty("Account_name")
public String account_name;
public class Transaction
@JsonProperty("Date")
public String date;
@JsonProperty("Amount")
public String amount;
public class Summary
@JsonProperty("AccountSummary")
public AccountSummary accountSummary;
@JsonProperty("Transaction")
public List<Transaction> transaction;
public class Root
@JsonProperty("Summary")
public Summary summary;
然后创建一个Main.java
类并实现以下代码。
public class Main
public static void main(String[] args)
try
ObjectMapper om = new ObjectMapper();
Root root = om.readValue(new File("your.value.json"),Root.class);
System.out.println(root);
catch (Exception e)
e.printStackTrace();
现在,当您执行时,您可以看到 json
文件中的所有值都已正确分配给您的模型。
所以像这样,您可以将您的 json
值映射到您的 objects
。
【讨论】:
很抱歉,我确实需要像在 AccountSummary 类中所做的那样手动分配值 其实我不认为我们可以分配这样的东西,但你可以创建默认值。【参考方案2】:您可以尝试以下手动设置值
Summary.java
public class Summary
public AccountSummary accountSummary;
public List<Transaction> transaction;
public AccountSummary getAccountSummary()
return accountSummary;
public void setAccountSummary(AccountSummary accountSummary)
this.accountSummary = accountSummary;
public List<Transaction> getTransaction()
return transaction;
public void setTransaction(List<Transaction> transaction)
this.transaction = transaction;
Transaction.java
public class Transaction
public String date;
public String amount;
public String getDate()
return date;
public void setDate(String date)
this.date = date;
public String getAmount()
return amount;
public void setAmount(String amount)
this.amount = amount;
AccountSummary .java
public class AccountSummary
public String account_number;
public String account_name;
public String getAccount_number()
return account_number;
public void setAccount_number(String account_number)
this.account_number = account_number;
public String getAccount_name()
return account_name;
public void setAccount_name(String account_name)
this.account_name = account_name;
final Code:-
AccountSummary a = new AccountSummary();
a.setAccount_name("xyz");
a.setAccount_number("xyz");
List<Transaction> transactionList = new ArrayList<Transaction>();
Transaction t = new Transaction();
t.setAmount("xyz");
t.setDate("xyx");
transactionList.add(t); // set the multiple object
// here is the final result
Summary s = new Summary();
s.setAccountSummary(a);
s.setTransaction(transactionList);
【讨论】:
以上是关于使用 Java 将 JSON 转换为 POJO 并赋值的主要内容,如果未能解决你的问题,请参考以下文章