gpt4 book ai didi

jaxb - 如何将 XmlGregorianCalendar 与 gson 的 fromJson 和 toJson 方法一起使用?

转载 作者:行者123 更新时间:2023-12-05 01:19:26 25 4
gpt4 key购买 nike

我的项目的主题是提供 XML 格式的数据并使用 google-gson 获取 Json 格式,我有 JAXB 从 XML 模式生成的 java POJO,其中我有一个 XMLGregorianCalendar 数据类型的变量。

我给出以下 XML 输入并从 gson.toJson() 方法中获取 json 格式;

<?xml version="1.0" encoding="UTF-8"?>
<EmpRequest xmlns="http://java.com/Employee">
<EmplIn>
<EmpID>12</EmpID>
<Empname>sara</Empname>
<Designation>SA</Designation>
<DOJ>2002-05-30T09:30:10+06:00</DOJ>
</EmplIn>
</EmpRequest>

但在输出中,我得到了以下内容。

{"emplIn":{"empID":"12","empname":"sara","designation":"SA","doj":{}}}

我在谷歌上冲浪并得到了添加 xml 模式并使用字符串更改 XmlGregorianCalendar 数据类型的建议。但我不想从这两种方式来实现它。

我的意思是如何通过 gson 的 fromJson 和 toJson 方法使用 XmlGregorianCalendar 数据类型获得正确的输出?

非常感谢,哈里什·拉吉。

最佳答案

希望这可以解决我使用 google-gson 的问题.

(下面要在我们创建Gson对象的地方加上)

第一步:

    Gson gson =
new GsonBuilder().registerTypeAdapter(XMLGregorianCalendar.class,
new XGCalConverter.Serializer()).registerTypeAdapter(XMLGregorianCalendar.class,
new XGCalConverter.Deserializer()).create();

第 2 步:我们需要创建 XGCalConverter 类,如下所示。

 import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

import java.lang.reflect.Type;

import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

public class XGCalConverter
{
public static class Serializer implements JsonSerializer
{
public Serializer()
{
super();
}

public JsonElement serialize(Object t, Type type,
JsonSerializationContext jsonSerializationContext)
{
XMLGregorianCalendar xgcal=(XMLGregorianCalendar)t;
return new JsonPrimitive(xgcal.toXMLFormat());
}
}
public static class Deserializer implements JsonDeserializer
{

public Object deserialize(JsonElement jsonElement, Type type,
JsonDeserializationContext jsonDeserializationContext)
{
try
{
return DatatypeFactory.newInstance().newXMLGregorianCalendar(jsonElement.getAsString());
}
catch(Exception ex)
{
ex.printStackTrace();
return null;
}
}
}
}

关于jaxb - 如何将 XmlGregorianCalendar 与 gson 的 fromJson 和 toJson 方法一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7725188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com