将JSON字符串解析为值

时间:2013-02-08 13:37:18

标签: c# json parsing

我不允许在客户处导入新包裹。我只允许在获取看起来像JSON字符串的String对象和返回之间的区域,我应该在List<String>中返回它的某些部分。

我觉得非常有限,到目前为止,我无法继续。我最好的选择是使用Regex对象,但也许有更平滑的解决方案? (我相信我也可以使用XDocument,LINQ,如果有任何帮助的话)。

建议?

1 个答案:

答案 0 :(得分:1)

按照manual进行操作,您应该可以这样做。

您只需要导入System.Runtime.Serialization.dll(standerd .net dll)

编辑:

你有这个方法

public static T JsonDeserialize<T> (string jsonString)

如果你知道你会得到什么json,你可以创建这样的对象:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

所以你可以像这样使用它:

string jsonString = "{\"Age\":28,\"Name\":\"Tom\"}";
Person p = JsonHelper.JsonDeserialize<person>(jsonString);

EDIT2:

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

    static void Main(string[] args)
    {
        string json = "[{\"Age\":28,\"Name\":\"Tom\"},{\"Age\":18,\"Name\":\"Andes\"},{\"Age\":32,\"Name\":\"Lily\"}]";
        List<Person> persons = new List<Person>(JsonHelper.JsonDeserialize<Person[]>(json));

    }

编辑3: JsonHelper是一个实现默认设置的类。

/// <summary>
/// JSON Serialization and Deserialization Assistant Class
/// </summary>
public class JsonHelper
{
    /// <summary>
    /// JSON Serialization
    /// </summary>
    public static string JsonSerializer<T>(T t)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream ms = new MemoryStream();
        ser.WriteObject(ms, t);
        string jsonString = Encoding.UTF8.GetString(ms.ToArray());
        ms.Close();
        return jsonString;
    }
    /// <summary>
    /// JSON Deserialization
    /// </summary>
    public static T JsonDeserialize<T>(string jsonString)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
        T obj = (T)ser.ReadObject(ms);
        return obj;
    }
}