gpt4 book ai didi

java - GSON 序列化未返回正确的 json 字符串

转载 作者:行者123 更新时间:2023-12-02 10:43:27 25 4
gpt4 key购买 nike

我正在尝试使用 GSON 序列化这种格式的对象

Object structure

这是我的代码:

public String encode(Object object){
return this.gson.toJson(object);
}

问题是我得到的结果:

"m_Volume": 57056040

与我的预期相反:

"m_Volume": {
"m_Exponent": 0,
"m_Mantissa": [4, 3, 102, -101, 40]
}

任何帮助/建议都会很棒。谢谢!

最佳答案

我看到您有一个名为 XempBigDecimal 的自定义对象

也许可以代替:

public String encode(Object object){
return this.gson.toJson(object);
}

尝试传递具体类型:

public String encode(XempBigDecimal object){
return this.gson.toJson(object);
}

编辑

我尝试通过单元测试重现您的案例,如下所示:

public class GsonTest {

private Gson gson;

@Before
public void setUp() {
gson = new Gson();
}

@Test
public void shouldCreateJson() {
XempBigDecimal object = new XempBigDecimal(new m_Volume(0, new byte[] {4, 3, 102, -101, 40}));

String json = encode(object);

assertThat(json).isEqualTo("{\"m_Volume\":{\"m_Exponent\":0,\"m_Mantissa\":[4,3,102,-101,40]}}");
}

public String encode(Object object) {
return gson.toJson(object);
}

public String encodeType(XempBigDecimal object) {
return gson.toJson(object);
}

private class XempBigDecimal {
public XempBigDecimal(GsonTest.m_Volume m_Volume) {
this.m_Volume = m_Volume;
}

private m_Volume m_Volume;
}

private class m_Volume {
public m_Volume(int m_Exponent, byte[] m_Mantissa) {
this.m_Exponent = m_Exponent;
this.m_Mantissa = m_Mantissa;
}

private int m_Exponent;
private byte[] m_Mantissa;
}
}

并且此测试通过,因此将参数定义为 Object 类型可能不是问题。也许您的对象或类定义有问题?也许m_Exponentm_Mantissa被Gson忽略了?当它们后面跟着 transient 关键字时,可能会发生这种情况。

关于java - GSON 序列化未返回正确的 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52769114/

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