【问题标题】:How to serialize content of a Map with their toString?如何用 toString 序列化 Map 的内容?
【发布时间】:2016-09-02 12:36:28
【问题描述】:

我尝试使用 json4s 原生库。以下是我的使用方法:

Builder b = new JsonMessageBuilder();
Map<String, List<Object>> m2 = new HashMap<>();
m2.put("e", Arrays.asList(new StringBuilder(123)));
b.message(JavaConverters.mapAsScalaMapConverter(m2).asScala());

public static class Test{
    @Override
    public String toString(){
        return "test";
    }
}

在哪里

class JsonMessageBuilder{
    def message[A <: AnyRef](a: A) = println(Serialization.write(a))
}

但是代码打印了这个:

{"e":[{}]}

如何强制将toString 序列化为映射?我想拥有

{"e":["test"]}

【问题讨论】:

  • 是错字吗?你的意思是:new StringBuilder ("123")
  • 你为什么期待这个输出?您的 Test 类不在任何地方使用。

标签: java scala json4s


【解决方案1】:

最有可能的问题是您没有正确实例化您的 StringBuilder,即没有将参数 123 括在引号中。这就是为什么你得到一个空的字符串生成器。打印{"e":[{}]} 时,序列化正确进行。试试这个:

m2.put("e", Arrays.asList(new StringBuilder("123")));

【讨论】:

    猜你喜欢
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 2020-05-02
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多