json 协议有规定连续两次序列化一个对象应该怎么样吗? 子问题: * python 如果反序列化一个「连续两次序列化后的字符串」 * java 如果反序列化一个「连续两次序列化后的字符串」 * * * 有一个 python 的 dict content = { 'name': '你好' } 我调用两次 json.dumps() import json content = { 'name': '你好' } print(json.dumps(json.dumps(content))) 输出如下 "{\"name\": \"\\u4f60\\u597d\"}" 然后我调用两次 json.loads,这个「被连续两次序列化后的字符串」就会变回 dict import json content = { 'name': '你好' } print(json.dumps(json.dumps(content))) a = json.dumps(json.dumps(content)) print(json.loads(json.loads(a))) 输出如下: "{\"name\": \"\\u4f60\\u597d\"}" {'name': '你好'} 一切都非常的优雅 但是当我 python 把 `"{\"name\": \"\\u4f60\\u597d\"}"` 传递给 java 同事的时候,他们告诉我,他们无法「简单」实现「把上面的字符串连续两次反序列化变成一个 hashmap」,他们说如果要反序列化成 hashmap 怎么怎么麻烦 我不理解,这么成熟的编程语言 java 为什么不能简单优雅的实现这一点? * * * 我把这个需求「使用 java 反序列化 `"{\"name\": \"\\u4f60\\u597d\"}"` 为 hashmap」问 chatGPT,它给的答案也是莫名其妙 为什么?是 java 的问题还是说 json 的协议就对于「连续两次序列化」没有做出标准规定导致不同编程语言自己有自己的实现? * * * 有谁知道,像 golang 和 rust、js 这些语言又是怎么处理这个问题呢?