C# 将JSON字符串解析为值
我不允许在客户处导入新包。我只允许在获取一个看起来像JSON字符串的C# 将JSON字符串解析为值,c#,json,parsing,C#,Json,Parsing,我不允许在客户处导入新包。我只允许在获取一个看起来像JSON字符串的字符串对象和一个返回之间进行操作,我应该在列表中返回它的某些部分 我觉得自己受到了极大的限制,就我所能看到的而言,我无法继续。我的最佳选择是使用Regex对象,但也许有更平滑的解决方案?(我相信我也可以使用XDocument和LINQ,如果有帮助的话) 建议?遵循这一点,你应该能够做到 您只需要导入System.Runtime.Serialization.dll(标准.net dll) 编辑: 你有这个方法吗 public st
字符串
对象和一个返回之间进行操作,我应该在列表
中返回它的某些部分
我觉得自己受到了极大的限制,就我所能看到的而言,我无法继续。我的最佳选择是使用Regex
对象,但也许有更平滑的解决方案?(我相信我也可以使用XDocument和LINQ,如果有帮助的话)
建议?遵循这一点,你应该能够做到
您只需要导入System.Runtime.Serialization.dll(标准.net dll)
编辑:
你有这个方法吗
public static T JsonDeserialize<T> (string jsonString)
所以你可以这样使用它:
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);
string jsonString=“{\'Age\':28,\'Name\':\'Tom\'”;
personp=JsonHelper.JsonDeserialize(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));
}
公共类人物
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
静态void Main(字符串[]参数)
{
字符串json=“[{\'Age\':28,\'Name\':\'Tom\',{\'Age\':18,\'Name\':\'Andes\',{\'Age\':32,\'Name\':\'Lily\'”;
List persons=新列表(JsonHelper.JsonDeserialize(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;
}
}
//
///JSON序列化和反序列化助手类
///
公共类JsonHelper
{
///
///JSON序列化
///
公共静态字符串JsonSerializer(T)
{
DataContractJsonSerializer ser=新的DataContractJsonSerializer(类型(T));
MemoryStream ms=新的MemoryStream();
ser.WriteObject(ms,t);
字符串jsonString=Encoding.UTF8.GetString(ms.ToArray());
Close女士();
返回jsonString;
}
///
///JSON反序列化
///
公共静态T JsonDeserialize(字符串jsonString)
{
DataContractJsonSerializer ser=新的DataContractJsonSerializer(类型(T));
MemoryStream ms=新的MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj=(T)ser.ReadObject(ms);
返回obj;
}
}
遵循这一点,你应该能够做到
您只需要导入System.Runtime.Serialization.dll(标准.net dll)
编辑:
你有这个方法吗
public static T JsonDeserialize<T> (string jsonString)
所以你可以这样使用它:
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);
string jsonString=“{\'Age\':28,\'Name\':\'Tom\'”;
personp=JsonHelper.JsonDeserialize(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));
}
公共类人物
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
静态void Main(字符串[]参数)
{
字符串json=“[{\'Age\':28,\'Name\':\'Tom\',{\'Age\':18,\'Name\':\'Andes\',{\'Age\':32,\'Name\':\'Lily\'”;
List persons=新列表(JsonHelper.JsonDeserialize(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;
}
}
//
///JSON序列化和反序列化助手类
///
公共类JsonHelper
{
///
///JSON序列化
///
公共静态字符串JsonSerializer(T)
{
DataContractJsonSerializer ser=新的DataContractJsonSerializer(类型(T));
MemoryStream ms=新的MemoryStream();
ser.WriteObject(ms,t);
字符串jsonString=Encoding.UTF8.GetString(ms.ToArray());
Close女士();
返回jsonString;
}
///
///JSON反序列化
///
公共静态T JsonDeserialize(字符串jsonString)
{
DataContractJsonSerializer ser=新的DataContractJsonSerializer(类型(T));
MemoryStream ms=新的MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj=(T)ser.ReadObject(ms);
返回obj;
}
}
它看起来像是JSON,还是实际的JSON?有很多开源库可以为您解析它。您可以将它们作为代码而不是dll导入。多么荒谬的约束。看起来你需要学习一些解析理论。你能举个字符串的例子吗?@MatíasFidemraizer它不是一个对象。这只是一根绳子。它是从分发JSON对象的web服务接收的。做出判断它看起来像JSON,或者是真正的JSON?有很多开源库可以为您解析它。您可以将它们作为代码而不是dll导入。多么荒谬的约束。看起来你需要学习一些解析理论。你能举个字符串的例子吗?@MatíasFidemraizer它不是一个对象。这只是一根绳子。它是从分发JSON对象的web服务接收的。做出判断您假设.net是允许的-我与不允许它的客户一起工作all@TomBeech既然它被标记为C#我想是的,前提是他们会让我这么做。然后呢?我已经在我的计算机上检查过了,有一个工厂我需要使用它来获得一个解析器,但我不清楚如何使用它来将字符串转换成任何有用的东西。@AndreasJohansson“有一个工厂我需要使用它来获得一个解析器”是什么意思?我在研究System.Runtime.Serialization.Json
名称空间中的内容。此外,我似乎无法在任何名称空间中找到JsonHelper
。你在哪里找到它?你假设.net是被允许的-我和不允许它的客户一起工作all@TomBeech既然它被标记为C#我想是的,前提是他们会让我这么做。然后呢?我已经在我的计算机上检查过了,有一个工厂我需要使用它来获得一个解析器,但我不清楚如何使用它来将字符串转换成任何有用的东西。@AndreasJohansson“有一个工厂我需要使用它来获得一个解析器”是什么意思?我在研究System.Runtime.Serialization.Json
名称空间中的内容。此外,我似乎无法在任何名称空间中找到JsonHelper
。你在哪里找到的?