java - 如何使用 Java 将动态 Json 转换为特定格式的 POJO 类
问题描述
输入 Json 文件如下代码所示:
{
"Payload": {
"any0": {
"pricingResponse": {
"priceDetails": {
"priceDetails": {
"seqId": "8015B000000Umo1QAC-",
"companyCode": "EPA",
"priceType": "Fuel Price",
"priceRequestSource": ""
},
"priceLineItems": {
"lineItem": [
{
"lineItemInfo": {
"seqId": "8015B000000Umo1QAC-28052018105047-022596",
"orderId": "00000266",
"lineItemId": "44",
"itemId": "70051",
"quantity": "100.00",
"unitPrice": "2.03200",
"unitPriceLCY": "2.03200"
}
}
]
}
}
}
}
}
}
预期输出(java类)
public class Payload
{
public Any0 any0;
}
/* Stub Class for Any0 */
public class Any0
{
public PricingResponse pricingResponse;
}
/* Stub Class for PricingResponse */
public class PricingResponse
{
public PriceDetails priceDetails;
}
/* Stub Class for PriceDetails */
public class PriceDetails
{
public String seqId;
public String priceRequestSource;
public String companyCode;
public String priceType;
public String deliveryType;
public String currencyCode;
public String priceDate;
public String applyOrderQuantity;
public String totalOrderQuantity;
public String customerId;
public String shipToId;
public String supplyLocationId;
public String transporterId;
public String onRun;
public String orderId;
public PriceDetails priceDetails;
public PriceLineItems priceLineItems;
public Error Error;
}
/* Stub Class for PriceLineItems */
public class PriceLineItems
{
public String orderId;
public List<LineItem> lineItem;
}
/* Stub Class for LineItem */
public class LineItem
{
public LineItemInfo lineItemInfo;
public AccountingDetails accountingDetails;
public Error Error;
}
我尝试使用杰克逊库将其转换为单独的 POJO 类,但我想创建嵌套类。这是我的示例代码
public void convert2JSON(URL inputJson, File outputPojoDirectory, String packageName, String className) throws IOException
{
JCodeModel codeModel = new JCodeModel();
URL source = inputJson;
GenerationConfig config = new DefaultGenerationConfig()
{
@Override
public boolean isGenerateBuilders()
{ // set config option by overriding method
return true;
}
public SourceType getSourceType()
{
return SourceType.JSON;
}
};
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
mapper.generate(codeModel, className, packageName, source);
codeModel.build(outputPojoDirectory);
}
有没有可能将动态嵌套的 Json 类文件转换为 Java 类的方法?任何帮助,将不胜感激。
解决方案
Map<String, ValueClass>
对包含可变键和不变值(类型ValueClass
)的每个结构使用 a 。
如果您还想反序列化具有可变值结构的映射,则需要编写一个自定义反序列化器,该反序列化器可以推断 JSON 应该反序列化到哪个 Java 类。这是有关如何使用 GSON 做到这一点的教程。
推荐阅读
- amazon-web-services - AWS APIGateway CloudFormation 指定方法所需的 API 密钥?
- python - 如何将字典列表保存到python3中的.mat文件?
- grails - 无法更新 .gsp 文件中的文本
- java - Java Regex:匹配任何单词单词并且必须包含某个作品,但除了一个单词
- java - 在 Java Tamagotchi 游戏中跟踪时间
- javascript - 为什么此方法中的回调位于 thenable 中,回调不应成为 updateAll 方法返回语句的一部分?
- compiler-construction - 是否可以使用 LLVM IR 作为通用语言在编程语言之间进行转换?
- laravel - 将较小的日期范围与较大的日期范围进行比较
- c# - 使用 JWT 的 aspcore 多策略
- python - 如何在 tensorflow 中更新“eagertensor”对象