Unity3d SimpleJSON add int to JSONClass

本文关键字:to JSONClass int add SimpleJSON Unity3d | 更新日期: 2023-09-27 18:35:14

我正在使用SimpleJSON for Unity3d。我想int添加到JSONClass.

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

JSONClass cl = new JSONClass();

我试过这个:

cl["attr"].AsInt = 4;

而这个:

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

以及任何其他情况。无论如何,我{"attr" : "4"} 4是字符串。

如何向其添加int

Unity3d SimpleJSON add int to JSONClass

在目前的实现中,这是不可能的。

所以我添加了新类型:

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
    }

并在 JSONData 中添加类型检查:

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将被添加为不带"的数字。并且看起来像这样:{"attr" : 4}

对此,

你怎么看? https://gist.github.com/lcnvdl/4532671a8f4dbbb6f306

要使用仅执行操作:

JsonHelper.Json(myObject);

您可以将其与对象,游戏对象,可脚本对象,单一行为等一起使用。