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

时间:2014-10-06 06:22:28

标签: c# json unity3d

我正在使用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

2 个答案:

答案 0 :(得分:6)

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);

答案 1 :(得分:0)

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

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

输出:

Joe
3