我的后端使用Springboot和Gson。我有这两个类的多对多关系:
订单类
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table( name = "orders")
public class Order {
@Id
@Expose
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Expose
@NotBlank
private String poNumber;
@Expose
@NotBlank
private String dimension;
@Expose
@NotBlank
private int initialQuantity;
@Expose
@NotBlank
private int leftQuantity;
@Expose
@NotBlank
private Date startDate;
@Expose
@NotBlank
private Date endDate;
@Expose
@SerializedName("status")
@Enumerated(EnumType.STRING)
@Column(length = 20)
private PoStatus status;
@OneToMany(mappedBy="order")
private Set<Log> logs;
@Expose
@SerializedName("products")
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable( name = "orders_products",
joinColumns = @JoinColumn(name = "order_id"),
inverseJoinColumns = @JoinColumn(name = "sap_code"))
private Set<Product> products = new HashSet<>();
产品类别
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table( name = "products")
public class Product {
@Expose
@Id
@NotBlank
private String sapCode;
@Expose
@NotBlank
private String sapCodeDescription;
@Expose
private String productData;
}
这是我用来向restendpoint提供数据的服务
public String getAllOrders() {
List<Order> allOrders = orderRepository.findAll();
String allOrdersResult = gson.toJson(allOrders);
return allOrdersResult;
}
以下是回应:
[
{
"id": 1,
"poNumber": "003100059361",
"dimension": "INTBKGR",
"initialQuantity": 200000,
"leftQuantity": 200000,
"startDate": "17/08/2022 00:00",
"endDate": "17/08/2022 00:00",
"status": "READY",
"products": [
{
"sapCode": "000000000000416234",
"sapCodeDescription": "1.STUFE 15X",
"productData": "{\"pieces\": 85, \"mark\": true, \"description\": \"elementum pellentesque quisque porta volutpat erat quisque erat eros viverra eget congue eget\"}"
}
]
}
]
我的目标是反序列化/转义productData
String属性。
我尝试过创建一个ProductData
类并使用@JsonAdapter
注释,但据我所知,当您需要为反序列化提供自定义行为时使用此注释,我示例中的JSON字符串非常简单,我不需要任何特定的逻辑。
我认为您必须为此声明一个类,并将productData类型从string更改为该类。
问题内容: 所有,我都有以下输出/字符串(它是JIRA API的响应): 我用于遍历元素并获取值。我在下面的“嵌套对象”示例中编写了类 http://www.javacreed.com/gson-deserialiser- example/ 我能够获得到第二级的元素值。例如:在此级别之前,我能够获得的值以及其他值。我如何获得的价值? 我应该如何构造我的解串器和类。请协助。谢谢。 问题答案: 试试这
我正在尝试使用gson从JSON对象反序列化数据。我有麻烦1)设计一个类。2)从内部列表对象获得一个空对象。 以下是JSON对象的示例 下面是我为json对象创建的类的一个示例,该类将与使用java的gson一起使用 下面是使用gson的示例代码 任何帮助都将不胜感激,我对GSON和检索JSON对象非常陌生。非常感谢你
问题内容: 我有一些具有各种属性的JSON,其中大多数是简单数据类型。但是,我在JSON中有一个属性,当我将其反序列化为C#类时,我只需要将其反序列化为字符串即可。 JSON示例: 除了将是有效的JSON对象外,“ json”对象没有任何设置结构。 因此,在上面的示例中,“ json”的值是一个JSON对象-但是当它反序列化时,我需要将它作为字符串。 因此,如果我的C#类是: 然后,如果我使用:
问题内容: 我在反序列化以下json数组时遇到麻烦(对不起,大小): 如果将其粘贴到json-viewer中,则会得到以下结构: 现在,包含具有坐标的数组的数组具有可变大小。所以我想在Java中,整个对象应该是一个数组,其中包含数组的集合,每个数组都包含一个。就像是 但是gson不接受这一点。我收到以下错误消息: 这似乎很奇怪,因为对我来说好像不像一个数组。但这可能使我感到困惑,或多或少地迷路了…
问题内容: 由于要执行处理的业务逻辑,因此我正在实现自定义。但是某些部分可以解析为标准方式。这是否可能- 我自己处理一些元素,并让一些嵌套元素自动处理? 这是JSON: 这是项的自定义反序列化器: 现在,我想让GSON解析枚举。我可以自己完成,这只是几行代码,但是我更愿意库做很多。 问题答案: …但是我希望图书馆尽其所能。 好吧,只需使用Gson。 有数据传输对象模式,尤其是Gson映射类,可以完
我想使用Gson将JSON反序列化为对象。我已经定义了相应的类,其中一些类的对象包含在其他对象中。在尝试反序列化整个JSON时,我得到了空值,所以我开始将其拆分。 我已经到了所有低级类都支持自己的地步,但是当我试图反序列化成一个包含那个较小对象的实例的对象时,所有的东西都返回为null。 我的部分JSON: UserProfile类: UPfield类: 用户类: Ufield类: 我的主要观点是