我不允许在客户处导入新包。我只允许在获取String
看起来像 JSON 字符串的对象和返回之间的区域,我应该在List<String>
.
我感到非常有限,据我所知,我无法继续。我最好的选择是使用Regex
对象,但也许有更流畅的解决方案?(我相信我也可以使用 XDocument 和 LINQ,如果有帮助的话)。
建议?
遵循本手册,您应该能够做到。
您只需要导入 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;
}
}