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

用gson序列化对象映射-object不完整

邢卓
2023-03-14

我想序列化一个对象栏,它包含基元类型和一个HashMap。

public class Bar{
 int simpleValue;
 HashMap<Foo,Integer> map;
...
}

public class Foo{
 ...
}
Gson gson = new Gson();
String json = gson.toJson(barObject);
{"simpleValue":9,"map":{"com.blabla.Foo@2d9b7da":120,...}}

我做错了什么?

gson.tojson(fooObject)打印foo...

共有1个答案

宰父志新
2023-03-14

您的代码正在打印对象名称的字符串表示形式,因为bar类有一个map对象,该对象的键为未重写的toString()类。
GSON使用tostring()实现来生成json密钥。
由于您还没有实现它,所以它将回到默认的object.tostring()来生成密钥。因此,下面的输出。是演示行为的源码,

public class Bar {
    Map<Foo, Integer> map;
    public static void main(String[] args) {
        Gson g = new Gson();
        TracingAspect t = new Bar();
        t.map = new HashMap<>();
        t.map.put(new Foo("ff"), 5);
        String j = g.toJson(t);
        System.out.println(j);
    }

}
class Foo {
    String a;
    public Foo (String a) {this.a=a;}
    @Override
    public String toString () {
        return a;
    }
}

下面的输出是,

{"map":{"ff":5}}
 类似资料:
  • 主要内容:示例我们将一个Java对象序列化为一个Json文件,然后读取该Json文件以获取对象。 在这个例子中,创建一个类。 然后将对象列化后存储在文件中,该文件将具有对象的json表示形式。 示例 在中创建一个名为的Java类文件,参考以下代码 - 执行上面示例代码,得到以下结果 -

  • 我想将这个对象序列化为JSON字符串 并得到如下结果: 我试着用 但不是这样,我得到了: 个性化序列化: 欢迎提出任何建议 谢谢,马里奥

  • 让我们将Java对象序列化为Json文件,然后读取该Json文件以获取该对象。 在这个例子中,我们创建了一个Student类。 我们将创建一个student.json文件,该文件将具有Student对象的json表示。 例子 (Example) 在C:\》GSON_WORKSPACE创建名为GsonTester的Java类文件。 File: GsonTester.java import java.

  • 让我们将一个java对象序列化为一个json文件,然后读取该json文件以获取该对象。 在这个例子中,我们创建了Student类。 我们将创建一个student.json文件,该文件将具有Student对象的json表示。 在C:\》Jackson_WORKSPACE创建名为C:\》Jackson_WORKSPACE的java类文件。 File: JacksonTester.java import

  • 在数据存储的上下文中,序列化是将数据结构或对象状态转换为可以存储(例如,在文件或存储缓冲器中)或稍后传输和重构的格式的过程。 在序列化中,对象被转换为可以存储的格式,以便以后能够对其进行反序列化并从序列化格式重新创建原始对象。 Pickle Pickling是将Python对象层次结构转换为要写入文件的字节流(通常不是人类可读的)的过程,这也称为序列化。 取消是反向操作,将字节流转换回工作的Pyt

  • 问题内容: 我想将此对象序列化为JSON字符串 并获得如下结果: 我尝试使用 但是相反,我得到了: 人员序列化器: 欢迎任何建议 谢谢,马里奥 问题答案: 为了获得所需的结果,您需要像这样编写串行器: 的结果 将会 完整的代码: