C# 如何在windows phone中反序列化json字符串?
我刚刚得到一个字符串形式的json响应。我的json如下所示C# 如何在windows phone中反序列化json字符串?,c#,json,windows-phone-7,C#,Json,Windows Phone 7,我刚刚得到一个字符串形式的json响应。我的json如下所示 "code": 0, "message": "success", "students": { "details":{ "hjeke": { "id": "257633000000070001", "name": "hjeke", "percentage": 36, "type": "Good", }, "Second": {
"code": 0,
"message": "success",
"students": {
"details":{
"hjeke": {
"id": "257633000000070001",
"name": "hjeke",
"percentage": 36,
"type": "Good",
},
"Second": {
"id": "257633000000073001",
"name": "Second",
"percentage": 4,
"type": "bad",
}
}
}
与hjeke和Second一样,有许多键值对,如何使用Newtonsoft.json反序列化json首先,创建类:
public class Hjeke
{
public string id { get; set; }
public string name { get; set; }
public int percentage { get; set; }
public string type { get; set; }
}
public class Second
{
public string id { get; set; }
public string name { get; set; }
public int percentage { get; set; }
public string type { get; set; }
}
public class Details
{
public List<Hjeke> hjeke { get; set; }
public List<Second> Second { get; set; }
}
public class Students
{
public List<Details> details { get; set; }
}
public class RootObject
{
public int code { get; set; }
public string message { get; set; }
public List<Students> students { get; set; }
}
public-class-Hjeke
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共整数百分比{get;set;}
公共字符串类型{get;set;}
}
公共二等舱
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共整数百分比{get;set;}
公共字符串类型{get;set;}
}
公开课详情
{
公共列表hjeke{get;set;}
第二个公共列表{get;set;}
}
公立班学生
{
公共列表详细信息{get;set;}
}
公共类根对象
{
公共整数代码{get;set;}
公共字符串消息{get;set;}
公共列表学生{get;set;}
}
之后,使用JSON.NET反序列化:
var deserialized = JsonConvert.DeserializeObject<Class1>(YourStringHere);
var deserialized=JsonConvert.DeserializeObject(YourStringHere);
首先,创建类:
public class Hjeke
{
public string id { get; set; }
public string name { get; set; }
public int percentage { get; set; }
public string type { get; set; }
}
public class Second
{
public string id { get; set; }
public string name { get; set; }
public int percentage { get; set; }
public string type { get; set; }
}
public class Details
{
public List<Hjeke> hjeke { get; set; }
public List<Second> Second { get; set; }
}
public class Students
{
public List<Details> details { get; set; }
}
public class RootObject
{
public int code { get; set; }
public string message { get; set; }
public List<Students> students { get; set; }
}
public-class-Hjeke
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共整数百分比{get;set;}
公共字符串类型{get;set;}
}
公共二等舱
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共整数百分比{get;set;}
公共字符串类型{get;set;}
}
公开课详情
{
公共列表hjeke{get;set;}
第二个公共列表{get;set;}
}
公立班学生
{
公共列表详细信息{get;set;}
}
公共类根对象
{
公共整数代码{get;set;}
公共字符串消息{get;set;}
公共列表学生{get;set;}
}
之后,使用JSON.NET反序列化:
var deserialized = JsonConvert.DeserializeObject<Class1>(YourStringHere);
var deserialized=JsonConvert.DeserializeObject(YourStringHere);
您对json响应有任何影响吗?在本例中,详细信息可能是一个JSONArray,而不是一个具有不同数量属性的对象,因为我假设这就是您的意思,这就是问题所在。您对json响应有任何影响吗?在本例中,详细信息可能是一个JSONArray,而不是一个具有不同数量属性的对象,因为我假设这就是您的意思,这就是这里的问题所在。试着理解我在前面问题中的解决方案
在这个问题上,您的第一个JSON非常好用。
JSON,其中字段名是唯一的,不便于反序列化。因此,在使用代码生成器时,每个实例都会遇到问题,例如公共类Hjeke
和公共类Second
在学生列表中使用JSON结构:
"code": 0,
"message": "success",
"students": [
{
"id": "257633000000070001",
"name": "hjeke",
"percentage": 36,
"type": "Good",
},
{
"id": "257633000000073001",
"name": "Second",
"percentage": 4,
"type": "bad",
}]
结构良好、灵活。使用这种方法,您不需要解析不明显的字段,如
"details":{
"hjeke": {
等等
根据我之前的回答,使用类与他们一起工作。主要思想-您需要对象列表<代码>公开学生名单。然后,所有
学生
对象在列表中反序列化,这很容易使用。试着理解我在上一个问题中的解决方案
在这个问题上,您的第一个JSON非常好用。
JSON,其中字段名是唯一的,不便于反序列化。因此,在使用代码生成器时,每个实例都会遇到问题,例如公共类Hjeke
和公共类Second
在学生列表中使用JSON结构:
"code": 0,
"message": "success",
"students": [
{
"id": "257633000000070001",
"name": "hjeke",
"percentage": 36,
"type": "Good",
},
{
"id": "257633000000073001",
"name": "Second",
"percentage": 4,
"type": "bad",
}]
结构良好、灵活。使用这种方法,您不需要解析不明显的字段,如
"details":{
"hjeke": {
等等
根据我之前的回答,使用类与他们一起工作。主要思想-您需要对象列表<代码>公开学生名单。然后,所有
学生
对象在列表中反序列化,这很容易使用。正如大家提到的,您的json似乎非常不灵活,哈
您可以提取感兴趣的数据
这就是你的模型:
public class StudentDetails
{
public string id { get; set; }
public string name { get; set; }
public int percentage { get; set; }
public string type { get; set; }
}
这就是你如何提取它的方法:
var jsonObj = JObject.Parse(str);
// get JSON result objects into a list
var results = jsonObj["students"]["details"].Children().Values();
// serialize JSON results into .NET objects
var details = new List<StudentDetails>();
foreach (JToken result in results)
{
var st = result.ToString();
var searchResult = JsonConvert.DeserializeObject<StudentDetails>(st);
details.Add(searchResult);
}
var jsonObj=JObject.Parse(str);
//将JSON结果对象放入列表中
var results=jsonObj[“学生”][“详细信息”].Children().Values();
//将JSON结果序列化为.NET对象
var details=新列表();
foreach(JToken result in results)
{
var st=result.ToString();
var searchResult=JsonConvert.DeserializeObject(st);
添加(搜索结果);
}
我在这里使用的是newtonsoft.json库。大家都提到过,你的json似乎非常不灵活,哈 您可以提取感兴趣的数据 这就是你的模型:
public class StudentDetails
{
public string id { get; set; }
public string name { get; set; }
public int percentage { get; set; }
public string type { get; set; }
}
这就是你如何提取它的方法:
var jsonObj = JObject.Parse(str);
// get JSON result objects into a list
var results = jsonObj["students"]["details"].Children().Values();
// serialize JSON results into .NET objects
var details = new List<StudentDetails>();
foreach (JToken result in results)
{
var st = result.ToString();
var searchResult = JsonConvert.DeserializeObject<StudentDetails>(st);
details.Add(searchResult);
}
var jsonObj=JObject.Parse(str);
//将JSON结果对象放入列表中
var results=jsonObj[“学生”][“详细信息”].Children().Values();
//将JSON结果序列化为.NET对象
var details=新列表();
foreach(JToken result in results)
{
var st=result.ToString();
var searchResult=JsonConvert.DeserializeObject(st);
添加(搜索结果);
}
我在这里使用的是newtonsoft.json库。您的响应字符串有一些错误,它不是有效的json 只需进行如下小修改:
{
"code": 0,
"message": "success",
"students": {
"details": {
"hjeke": {
"id": "257633000000070001",
"name": "hjeke",
"percentage": 36,
"type": "Good"
},
"Second": {
"id": "257633000000073001",
"name": "Second",
"percentage": 4,
"type": "bad"
}
}
}
}
你可以看出区别
现在按照以下步骤操作:
1。转到此链接
2。将Json字符串放在那里并生成C#类对象
3。现在在解决方案中创建此类
4。现在反序列化如下
var DeserialisedObject = JsonConvert.DeserializeObject<Your Class>(YourJsonString);
var DeserialisedObject=JsonConvert.DeserializeObject(YourJsonString);
您的响应字符串有一些错误,它不是有效的json
只需进行如下小修改:
{
"code": 0,
"message": "success",
"students": {
"details": {
"hjeke": {
"id": "257633000000070001",
"name": "hjeke",
"percentage": 36,
"type": "Good"
},
"Second": {
"id": "257633000000073001",
"name": "Second",
"percentage": 4,
"type": "bad"
}
}
}
}
你可以看出区别
现在按照以下步骤操作:
1。转到此li