用C#,我有一个JISON串和值,现在怎么把值从这个JISON值中取出来呢?c# 反序列化 怎么样把值从JISON串中取出来呢?

我有一个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; }
    }

}

运行结果:

img

另外,分享一下如何快速将JSON字符串转换成C#类的网站:

如图:

img

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"
}
 

img


然后构建模型来解析json

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来反序列化