使用 Unity 的 SimpleJSON 检索不带引号的字符串

Posted

技术标签:

【中文标题】使用 Unity 的 SimpleJSON 检索不带引号的字符串【英文标题】:Retrieving a string without the quotes using Unity's SimpleJSON 【发布时间】:2014-11-30 09:31:51 【问题描述】:

我正在使用来自http://wiki.unity3d.com/index.php/SimpleJSON 的 SimpleJSON 脚本

JSONNode root = JSON.Parse (" \"Name\" : \"Joe\"");
Debug.Log (root ["Name"].ToString().Length);

这将返回 5 而不是 3。这是因为 root ["Name"] 返回的字符串字面意思是 "Joe"(包括引号,所以是 5 个字符)。

但这并不是我真正想要的——我在其中加上了引号,因为这是解析器工作的唯一方式。

当然,我可以通过取出一个子字符串来简单地手动删除引号,但我觉得这不是应该的。所以我的问题是:如何使用此脚本在不带引号的情况下检索字符串 Joe

【问题讨论】:

【参考方案1】:

JSONNode 类是抽象的; JSONDataToString() 方法插入引号。见:

public override string ToString ()

    return "\"" + Escape (m_Data) + "\"";

尝试改用Value 属性:

JSONData root = JSON.Parse(" \"Name\" : \"Joe\"");
Debug.Log(root["Name"].Value.Length);
Debug.Log(root["Name"].Value);

【讨论】:

【参考方案2】:

使用 Value 属性而不是调用 ToString()。

JSONNode root = JSON.Parse(" \"Name\" : \"Joe\"");
Console.WriteLine(root["Name"].Value);
Console.WriteLine(root["Name"].Value.Length);

输出:

Joe
3

【讨论】:

与上一个答案的主要区别是什么? 没有区别。只是有点不专心。

以上是关于使用 Unity 的 SimpleJSON 检索不带引号的字符串的主要内容,如果未能解决你的问题,请参考以下文章

Unity Json 之三

读取大型 JSON 文件而不挂在 Unity 中

在 C# 中循环一个 SimpleJSON 数组

如何在 Unity3D 中将类对象转换为 JSON 字符串?

JSON 使用 simplejson 序列化 Django 模型

c#/unity json 错误,并希望使用 Unity JsonUtility 或 litJson 在 JsonObject 中检索 jsonObject