扩展Newtonsoft.Json.JObject类

时间:2018-02-01 06:58:18

标签: c# json

我想扩展Newtonsoft.Json.JObject类以添加一些方法。 JObject只有getValue()方法,我想扩展getString(),getInt,getDouble,getDate ......,代码如下:

类JSONObject:JObject     {         JObject jo = new JObject();

    public JSONObject(JObject jo)
    {
        this.jo = jo;
    }
    public  JSONArray GetJSONArray(string key)
    {
        return (JSONArray)jo.GetValue(key);
    }

    public string getString(string key)
    {
        return (string)jo.GetValue(key).ToString();
    }

    public int getInt(String key)
    {
        return Convert.ToInt32(getString(key));
    }

    public long getLong(String key)
    {
        return Convert.ToInt64(getString(key));
    }

    public bool getBool(String key)
    {
        return Convert.ToBoolean(getString(key));
    }

    public double getDouble(String key)
    {
        return Convert.ToDouble(getString(key));
    }

    public DateTime getDateTime(String key,IFormatProvider format)
    {
        return Convert.ToDateTime(getString(key),format);
    }

    public DateTime getDateTime(String key)
    {
        DateTimeFormatInfo dtFormat = new 
        System.Globalization.DateTimeFormatInfo();
        dtFormat.ShortDatePattern = "yyyy/MM/dd HH:mm:ss";
        return Convert.ToDateTime(getString(key),dtFormat );
    }


}

一切正常,除了我使用JObject.parse()方法,因为JObject.parse()返回一个JObject,JObject是JSONObject的父类,它不能转换为JSONObject。所以不能通过我的JSONObject类将字符串解析为JSONObject。我希望我的班级用我自己的方法完全扩展JObject类,任何人都可以给我建议吗?感谢。

1 个答案:

答案 0 :(得分:0)

就这样使用它

JObject o = ...;
return o.Value<string>();