使用 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
类是抽象的; JSONData
类 ToString()
方法插入引号。见:
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 检索不带引号的字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Unity3D 中将类对象转换为 JSON 字符串?
JSON 使用 simplejson 序列化 Django 模型
c#/unity json 错误,并希望使用 Unity JsonUtility 或 litJson 在 JsonObject 中检索 jsonObject