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

java - 如何解决JSONObject序列化与Map序列化结果不一致的问题?

庄阿苏
2024-04-23

采用net.sf.json.JSONObject处理数据时,type字段序列化后能不能和采用Map处理数据时输出的结果一致呢?

@Test    public void testJsonObject() throws JsonProcessingException {        ObjectMapper objectMapper = new ObjectMapper();        List<String> type = Lists.newArrayList("A", "B");        JSONObject jsonObject = new JSONObject();        jsonObject.put("type", objectMapper.writeValueAsString(type));        System.out.println(objectMapper.writeValueAsString(jsonObject));        Map<String, Object> map = new HashMap<>();        map.put("type", objectMapper.writeValueAsString(type));        System.out.println(objectMapper.writeValueAsString(map));    }

输出

{"type":["A","B"]}{"type":"[\"A\",\"B\"]"}

序列化两次type

jsonObject.put("type", objectMapper.writeValueAsString(objectMapper.writeValueAsString(type)));

输出

{"type":"[\\\"A\\\",\\\"B\\\"]"}{"type":"[\"A\",\"B\"]"}

输出与采用Map还是不同,Map输出的type可以直接反序列化为字符串数组,但是序列化两次的不能直接反序列化为字符串数组

共有1个答案

陶柏
2024-04-23

实在没找到这个net.sf.json.JSONObject

JSONObject jsonObject = new JSONObject();jsonObject.put("type", objectMapper.writeValueAsString(type));// FIXME: <猜测> 问题在这里 jsonObject 本身就是JSON对象,理论上 jsonObject.asString()? 类似的方法应该有,直接转为String类型System.out.println(objectMapper.writeValueAsString(jsonObject));

建议你换个JSON类库。

image.png

 类似资料:
  • 如题目所述,想请教一下大佬们在Java中序列化与反序列化的意义是什么,如何理解Java的序列化和反序列化?

  • 我是solr的新手,当我试图在Solr中序列化/反序列化一个Map时,我遇到了一个问题。 我在Java应用程序中使用Spring Data Solr,如下所示: 它在Solr中展平并序列化我地图,如下所示: 但是,当我运行搜索时,返回的对象始终将此字段设置为 NULL。反序列化不适用于此特定字段,看起来它无法识别键 1、键 2...作为地图的一部分。 有人知道如何使派生工作吗?我必须实现自定义转换

  • 上一小节我们学习了 Java 的输入输出流,有了这些前置知识点,我们就可以学习 Java 的序列化了。本小节将介绍什么是序列化、什么是反序列化、序列化有什么作用,Serializable 接口以及 Externalizable 接口,常用序列化工具介绍等内容。 1. 序列化与反序列化 序列化在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式,以留待后续在相同或另一台计算机环境中,能

  • 问题内容: 如何序列化未实现Serializable的对象?我不能将其标记为Serializable,因为该类来自第3方库。 问题答案: 您不能序列化未实现的类,但可以将其包装在可以实现的类中。为此,您应该在包装器类上实现和,以便可以以自定义方式序列化其对象。 首先,使您的非序列化字段。 在中,首先调用流以存储所有非瞬态字段,然后调用其他方法来序列化不可序列化对象的各个属性。 在中,首先调用流以读

  • 类的包 不实现。 我想使这个对象可序列化,因为我在应用程序服务器之间使用会话复制,保存在会话中。 我有两个选择来实现这一点: 实现子类 。 在 上使用 方法,同时将此对象保存在会话中。 任何人都可以建议我应该使用两个选项中的哪一个,原因是什么?

  • 本文向大家介绍Java中对象序列化与反序列化详解,包括了Java中对象序列化与反序列化详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java中对象序列化与反序列化。分享给大家供大家参考。具体如下: 一、简介 对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程。 序列化一般用于以下场景: 1.永久性保存对象,保存对象的字节序列