1

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

我感到非常有限,据我所知,我无法继续。我最好的选择是使用Regex对象,但也许有更流畅的解决方案?(我相信我也可以使用 XDocument 和 LINQ,如果有帮助的话)。

建议?

4

1 回答 1

1

遵循本手册,您应该能够做到。

您只需要导入 System.Runtime.Serialization.dll(标准 .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);

编辑2:

    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;
    }
}
于 2013-02-08T15:22:42.883 回答