gpt4 book ai didi

java - 使用 Gson 序列化 JSON 时包裹某些值

转载 作者:行者123 更新时间:2023-12-01 05:23:27 34 4
gpt4 key购买 nike

使用 GSON 将对象模型序列化为 JSON 时如何包装某些值?模型示例:

class Order {
Customer cust;
}

class Customer {
String name;
int age;
}

序列化客户通常会产生如下结果:

{cust:{name:joe, age:21}}

我想要做的是将 Order 和 Customer 值包装在带有类名的附加元素中。所以预期的 JSON 是:

{Order:{cust:Customer:{name:joe, age:21}}}

我要序列化的实际类可以是任何内容,因此我无法在序列化器中对特定属性进行硬编码。但我想用它们的类名来包装某些属性。

我该怎么做?

最佳答案

但这不是一个有效的 json 字符串:

{Order:{cust:Customer:{name:joe, age:21}}}

在您的应用程序中,您必须正确建模/实现您的域类,然后才能将其用于序列化/反序列化 json 字符串,换句话说,在调用 toJson/fromJson 方法之前应该知道域类。然而,通过使用 Java 通用类型,可以在运行时动态确定实际的域类类型。

查看Serializing and Deserializing Generic Types部分来自 Gson 用户指南:

public class Foo<T> {
public T value;
}

序列化它:

Gson gson = new Gson();
Type fooType = new TypeToken<Foo<Bar>>() {}.getType();
gson.toJson(foo, fooType);

反序列化它:

Gson gson = new Gson();
Type fooType = new TypeToken<Foo<Bar>>() {}.getType();
gson.fromJson(json, fooType);

关于java - 使用 Gson 序列化 JSON 时包裹某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10022420/

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