gpt4 book ai didi

java - 如何强制java中的FlexJson将json对象反序列化为字符串?

转载 作者:行者123 更新时间:2023-11-30 04:53:24 30 4
gpt4 key购买 nike

所以我从服务器返回一个如下所示的对象:

{
"Status": {
"stuff":"stuff...";
"morestuff":"morestuff...";
};
"Data": { ... another object ... };
}

但是,当我取回这个对象时,我想将其反序列化为如下所示的 java 类:

class Response
{
public StatusObject Status;
public String Data;
}

但是 FlexJson 将一个对象视为数据属性,然后尝试将 HashMap 转换为我的数据字符串。如果我收到以“null”作为数据属性的响应,则一切正常(因为您可以将 null 分配给字符串)。

我该如何告诉 FlexJson 不要尝试从 Data 属性中创建 HashMap,而只是将其视为字符串(即使它是 JSON 对象)?

现在我的反序列化代码行如下所示:

formattedResponse = new JSONDeserializer<network.Response>()
.use( "values", network.Response.class )
.deserialize(JSONString, network.Response.class);

感谢您的帮助!

最佳答案

这很困难,因为它在开始将 JSON 绑定(bind)到对象之前将其解析为中间形式。因此,在开始询问对象应使用什么类型之前,它已经被解析为 HashMap。如果您想将其放入字符串中,则必须将其转回 JSON。您可以使用 ObjectFactory 并将其绑定(bind)到对象中的路径来做到这一点。在 ObjectFactory 内部,它可以将其转换为字符串并将其绑定(bind)到那里的对象中。

new JSONDeserializer<...>()
.use( "values", Response.class )
.use( "values.Data", new JSONStringTransformer() )
.deserialize( json, Response.class );

关于java - 如何强制java中的FlexJson将json对象反序列化为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353447/

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