我有一个JISON串和值,现在怎么把值从这个JISON值中取出来呢?c# 反序列化 怎么样把值从JISON串中取出来呢?
{
"personModellist": [
{
"id": "220202",
"userid": "5.1",
"YHKL": "111",
},
{
"id": "220204",
"userid": "5.1",
"YHKL":"222",
},
{
"id": "220205",
"userid": "17.8",
"YHKL":"333",
}
],
"Code": "0",
"Msg": "1",
"Status": 2
"strSQL": "3",
"FieldMemo": "4"
}
还是使用Newtonsoft
来反序列化,示例如下:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace ConsoleApp2
{
internal class Program
{
static void Main(string[] args)
{
var json = "{\"personModellist\": [{\"id\": \"220202\",\"userid\": \"5.1\",\"YHKL\": \"111\",},{\"id\": \"220204\",\"userid\": \"5.1\",\"YHKL\":\"222\", },{ \"id\": \"220205\",\"userid\": \"17.8\",\"YHKL\":\"333\",}], \"Code\": \"0\",\"Msg\": \"1\",\"Status\": 2,\"strSQL\": \"3\",\"FieldMemo\": \"4\" }";
var result = JsonConvert.DeserializeObject<Response>(json);
Console.WriteLine($"Code:{result.Code}");
Console.WriteLine($"Msg:{result.Msg}");
Console.WriteLine($"Status:{result.Status}");
Console.WriteLine($"strSQL:{result.strSQL}");
Console.WriteLine($"FieldMemo:{result.FieldMemo}");
foreach (var p in result.personModellist)
{
Console.WriteLine($"id: {p.id},user_id: {p.userid}, YHKL: {p.YHKL}");
}
Console.ReadKey();
}
}
public class PersonModellist
{
public string id { get; set; }
public string userid { get; set; }
public string YHKL { get; set; }
}
public class Response
{
public List<PersonModellist> personModellist { get; set; }
public string Code { get; set; }
public string Msg { get; set; }
public int Status { get; set; }
public string strSQL { get; set; }
public string FieldMemo { get; set; }
}
}
运行结果:
另外,分享一下如何快速将JSON字符串转换成C#类的网站:
如图:
JObject a = (JObject)JsonConvert.DeserializeObject(resulta);//解析前台传值
JArray ja_vbls = (JArray)a["Data"];//获取名称 这里的Data就是你的personModellist
然后循环取
for (int i = 0; i < jarray.Count; i++)
{
string ID= jarray[i]["id"];
.......
.......
.......
}
首先确保你的json是正确的,比如下面这样:
{
"personModellist": [
{
"id": "220202",
"userid": "5.1",
"YHKL": "111"
},
{
"id": "220204",
"userid": "5.1",
"YHKL":"222"
},
{
"id": "220205",
"userid": "17.8",
"YHKL":"333"
}
],
"Code": "0",
"Msg": "1",
"Status": 2,
"strSQL": "3",
"FieldMemo": "4"
}
public class PersonModellistItem
{
/// <summary>
///
/// </summary>
public string id { get; set; }
/// <summary>
///
/// </summary>
public string userid { get; set; }
/// <summary>
///
/// </summary>
public string YHKL { get; set; }
}
public class Root
{
/// <summary>
///
/// </summary>
public List <PersonModellistItem > personModellist { get; set; }
/// <summary>
///
/// </summary>
public string Code { get; set; }
/// <summary>
///
/// </summary>
public string Msg { get; set; }
/// <summary>
///
/// </summary>
public int Status { get; set; }
/// <summary>
///
/// </summary>
public string strSQL { get; set; }
/// <summary>
///
/// </summary>
public string FieldMemo { get; set; }
}
具体反序列化用微软自带的方法或者newtonjson或者谷歌的都行了,只是速度不同,如果已知模型情况用微软的,特性别忘了
···csharp
[DataContract]
[DataMember]
···
构建对应的实体类 然后Json.NET来反序列化