我使用Unity Engine制作应用程序,要求是:我需要下载几个大的(> 5米)JSON字符串,并将它们转换为我喜欢的任何内容,并且当游戏启动时,应用程序使用其中之一,并需要快速定位文件中的字段(<0.5s)并获取内容。
一开始我在C#中使用类序列化,将每个JSON字符串转换为大对象,并将其序列化为文件。但是在运行时反序列化会花费太多时间,除非我反序列化整个文件,否则无法读取内容。
所以现在我尝试使用XML代替。我将JSON转换为XML,使用XPathDocument快速定位XML节点,但创建XPathDocument也花费了太多时间,当我尝试使用SelectSingleNode搜索其中一个特定字段时,它也降低了帧速率。
那么如何快速定位特定领域?我找不到字段映射或其他东西使它真的很快。 XMLReader只能继续前进,所以我没有使用它。
答案 0 :(得分:0)
我不确定这是否可以帮助您在Unity的上下文中,但您可能想看看/尝试我的JSON解析器/反序列化器的JSONPath支持:
https://github.com/ysharplanguage/FastJsonParser#JSONPath
这是一个简单的示例,可以帮助您入门:
https://github.com/ysharplanguage/FastJsonParser/blob/master/JsonTest/ParserTests.cs#L412
On NuGet:
https://github.com/ysharplanguage/FastJsonParser#NuGet
关于JSONPath语法,请参阅:
http://goessner.net/articles/JsonPath
'希望这有帮助,