【发布时间】:2015-06-23 22:26:32
【问题描述】:
我有一个简单的数据结构,我想在不增加太多开销的情况下对其进行序列化。 就数据大小而言,您认为哪种方法最好?
- 使用分隔符作为“#”或其他我 100% 的字符的自定义序列化/反序列化不存在于我的数据中
- XmlSerialization
- JSON
- 其他
我正在使用带有 # 作为分隔符的自定义序列化,因为我 100% 确定我的数据中没有该字符。
数据结构示例:
string Title
int ChapterIndex
List<String> Paragraphs
我有上面的对象列表
- 没有优化(制表符和空格)
JSON:
[
{
"title": "some title 0",
"chapterIndex": 0,
"paragraphs": ["p1", "p2", "p3", "p4"]
},
{
"title": "some title 1",
"chapterIndex": 1,
"paragraphs": ["p1chap1", "p2chap1", "p3chap1", "p4chap1"]
}
]
XML:
<RootTag>
<item title="some title 0" chapterIndex="0">
<paragraph>p1</paragraph>
<paragraph>p2</paragraph>
<paragraph>p3</paragraph>
<paragraph>p4</paragraph>
</item>
<item title="some title 1" chapterIndex="1">
<paragraph>p1chap1</paragraph>
<paragraph>p2chap1</paragraph>
<paragraph>p3chap1</paragraph>
<paragraph>p4chap1</paragraph>
</item>
</RootTag>
- 优化(没有不必要的字符)
JSON:
[{"title":"some title 0","chapterIndex":0,"paragraphs":["p1","p2","p3","p4"]},{"title":"some title 1","chapterIndex":1,"paragraphs":["p1chap1","p2chap1","p3chap1","p4chap1"]}]
XML:
<RootTag><item title="some title 0" chapterIndex="0"><paragraph>p1</paragraph><paragraph>p2</paragraph><paragraph>p3</paragraph><paragraph>p4</paragraph></item><item title="some title 1" chapterIndex="1"><paragraph>p1chap1</paragraph><paragraph>p2chap1</paragraph><paragraph>p3chap1</paragraph><paragraph>p4chap1</paragraph></item></RootTag>
自定义:
some title 0##0##p1#p2#p3#p4###some title 1##1##p1chap1#p2chap1#p3chap1#p4chap1###and_so_on
自定义优化:
some title 0§0§p1#p2#p3#p4¤some title 1§1§p1chap1#p2chap1#p3chap1#p4chap1¤and_so_on
拥有
- ¤ 作为列表项分隔符
- § 作为项目分隔符内的属性
- #作为段落内容分隔符
更新: 就我而言,我的字符串多于整数,因为它是一种书籍/歌词应用程序,只需要标题章节编号/歌词 ID 和歌词的所有段落。
【问题讨论】:
标签: c# xml json serialization xml-serialization