C# 如何理解JSON rfc7159字符串和字符问题
现在我正在使用C#实现一个JSON序列化工具。我所指的标准是。我不理解本文件第8项(字符串和字符问题)的内容C# 如何理解JSON rfc7159字符串和字符问题,c#,json,C#,Json,现在我正在使用C#实现一个JSON序列化工具。我所指的标准是。我不理解本文件第8项(字符串和字符问题)的内容 我构建的JSON序列化工具非常简单。它可以将对象转换为字符串或字符串转换为对象。 我只公开了2个API public string SerializeToJson(object obj); public object DeserializeToObj(string json); 对于序列化,我只负责生成一个字符串(utf16),我不关心将它编码成什么二进制 对于反序列化,在代码级别,
我构建的JSON序列化工具非常简单。它可以将对象转换为字符串或字符串转换为对象。
我只公开了2个API
public string SerializeToJson(object obj);
public object DeserializeToObj(string json);
对于序列化,我只负责生成一个字符串(utf16),我不关心将它编码成什么二进制
对于反序列化,在代码级别,我只接受一个字符串(我不关心从何处读取该字符串),我读取该字符串的每个字符,如果格式不正确,则抛出一个错误
所以我不太理解Json RFC 7159 8.1和8.2。为什么它出现在JSON标准中
<对于一个C*JSON序列化工具,我应该考虑它吗?如果我弄错了,你能告诉我这是什么意思或者给我一个场景吗
对于8.3,当序列化时,我会将其更改为\\\\\\\\
的\\\\\\
和\\u005c
的\\u005c
的\\\\\\\\
。在反序列化中,我读取它们的代码单元进行比较,因此\\\
和\u005c
肯定是相同的,那么8.3是什么意思呢?它是用于序列化还是反序列化?我的理解正确吗?或者,在序列化时,无论是
\\
还是\u005c
,是否需要我最终输出相同的内容(例如\\u005c
) 您可以通过两个步骤完成序列化。首先是字符串,然后是UTF-8字节。UTF-8是可互换JSON文档所必需的(,它淘汰了RFC 7159)
您只需要在JSON字符串中转义
必须转义的字符:
- 引号
- 反向索利多金币
- 和控制字符(U+0000到U+001F)
(ASCII与此处无关。)由
\
u
0
0
5
c
(按该顺序)组成的输入字符串可以对该字符串中的6个字符中的任何一个进行不同的转义。解码器需要正确处理所有的可能性,编码器不需要满足于任何特定的形式——特别是,您不需要往返。由\
\组成的字符串同样有六种形式(将\
转义为\
或\u005c
或\u005c
)。在这里,第7节比第8节更相关。请记住三层:字符->JSON字符(转义或非转义)->编码字符的代码点。
public string SerializeToJson(object obj);
public object DeserializeToObj(string json);