【问题标题】:Retrieving a string without the quotes using Unity's SimpleJSON使用 Unity 的 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

【问题讨论】:

    标签: c# json unity3d


    【解决方案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
      

      【讨论】:

      • 与上一个答案的主要区别是什么?
      • 没有区别。只是有点不专心。
      猜你喜欢
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2021-11-20
      相关资源
      最近更新 更多