2014-12-25 67 views
4

我對Unity3d使用SimpleJSON。我想添加intJSONClassUnity3d SimpleJSON將int添加到JSONClass

例如,我需要的JSON:{"attr" : 4}

JSONClass cl = new JSONClass(); 

我嘗試這樣做:

cl["attr"].AsInt = 4; 

這:

cl["attr"] = new JSONData(4); 

而且任何其他案件。無論如何,我得到{"attr" : "4"}其中4是字符串。如何將int添加到其中?

回答

8

在目前的實現中,這是不可能的。

所以我增加了新的類型:在JSONData

public enum JSONBinaryTag 
    { 
     Array   = 1, 
     Class   = 2, 
     Value   = 3, 
     IntValue  = 4, 
     DoubleValue  = 5, 
     BoolValue  = 6, 
     FloatValue  = 7, 
     LongValue   = 8, 
     String   = 9, // <-- new 
     Number = 10   // <-- new 
    } 

並添加類型檢查:

public class JSONData : JSONNode{ 
    static Regex m_Regex = new Regex(@"^[0-9]*(?:\.[0-9]*)?$"); 
    private JSONBinaryTag m_Type = JSONBinaryTag.String; 

    private string m_Data; 
    public override string Value { 
     get { return m_Data; } 
     set { m_Data = value; } 
    } 
    public JSONData(string aData){ 
     m_Data = aData; 

     // check for number 
     if (m_Regex.IsMatch(m_Data)) 
      m_Type = JSONBinaryTag.Number; 
     else 
      m_Type = JSONBinaryTag.String; 

    } 
    [...] 
} 

而改變toString()方法:

public override string ToString(){ 
     if (m_Type == JSONBinaryTag.String) 
      return "\"" + Escape(m_Data) + "\""; 
     else 
      return Escape(m_Data); 

    } 

現在intfloatdouble會被添加爲沒有0123的號碼。並且看起來像這樣:{"attr" : 4}