当前位置: 首页 > 知识库问答 >
问题:

可序列化字段字符串JSON

王庆
2023-03-14

我有课

public class ClassSerializable {

  private Long id;

  private String json;
}

其中fieldjson={"field dJson":{"一": 1,"二": 1}}

如果使用ObjectMapper反序列化此对象

String jsonString = mapper.writeValueAsString(objectСlassSerializable);

结果是这样的:

{
  "id": 7,
  "json":"{\"fieldJson\": {\"one\": 1, \"two\": 1}}"
}

添加了转义(\),并且json字段有引号(")。如何正确摆脱这一点并制作单个JSON?像这样:

{
    "id": 7,
    "json": {
        "fieldJson": {
            "one": 1,
            "two": 1
        }
    }
}

共有2个答案

燕璞
2023-03-14

您的程序现在的设置方式是,它将json字段序列化为字符串,并且它不知道它应该序列化为JSON。因此,您需要将json字段序列化为实际的JSON对象,将其存储在ClassSerializable中,然后将其序列化。

当然,您可能需要包含一些其他代码以使其正确序列化,但一般想法是您确实需要指定它是一个对象,而不仅仅是另一个字符串。

陶星辰
2023-03-14

行为是正确的,但与你的意图不同。

您有一个具有两个字段的对象:

  • long类型的id
  • String类型的json

但您的目的是在json字段中存储一个对象。您还需要将其存储为java中的对象。如果知道json字段将只存储json对象,则可以将其定义为映射

所以在java中存储它的最好方法是

public class ClassSerializable {

  private Long id;

  // It can store any valid json object structure as java object
  // Change it to private Object json if it can store also primitives and arrays
  private Map<String, Object> json;
  
}
 类似资料:
  • 我当前的项目使用Kotlin序列化来使用一系列远程RESTFul API。 API响应是Json,我无法修改它们。 其中一个API将“Person”作为字符串或字符串数组返回。 我如何让Kotlin序列化自动消耗任何一个值? 我使用这个版本的静态编程语言序列化

  • 问题内容: 我有以下类,它是由Jackson映射的(简化版): 在某些情况下,服务器会返回,然后我想将name设置为空的Java String。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串? 问题答案: 您可以在默认构造函数中或声明时进行设置: 要么

  • 我有以下由Jackson映射的类(简化版): 在某些情况下,服务器返回,然后我想将name设置为空Java字符串。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串吗?

  • 字符串序列化是将对象状态写入字节流的过程。 在python中,“pickle”库用于启用序列化。 该模块包含一个强大的算法,用于序列化和反序列化Python对象结构。 “Pickling”是将Python对象层次结构转换为字节流的过程,“unpickling”是相反的过程。 泡菜模块的演示如下 - import pickle #Here's an example dict grades = { '

  • Form 类中的每个字段不仅负责验证数据,还负责 “清洗” 它 — 将其规范化为一致的格式。 — Django 文档 序列化字段处理基本数据类型和其他数据类型(比如自定义的类)之间的转换。它们还可以对数据进行验证,以及从其父对象中检索和设置值。 注意: 序列化字段都声明在 fields.py 中,但按照惯例,应该使用 from rest_framework import serializers ,

  • 问题内容: 我正在使用JsonConvert.SerializeObject序列化模型对象。服务器希望所有字段都为字符串。我的模型对象具有数字属性和字符串属性。我无法将属性添加到模型对象。有没有一种方法可以将所有属性值序列化为字符串?我必须仅支持序列化,而不支持反序列化。 问题答案: 您甚至可以为数字类型提供自己的数字。我只是想这和它的作品- 它的快速和肮脏的,你几乎肯定希望把它扩大到支持其他数字