C#解析JSON字符串

版权声明:本文为simorel原创文章,未经simorel允许不得转载。 https://blog.csdn.net/Simoral/article/details/80049081

C#解析JSON字符串


吃水不忘打井人,参考的园子里轩辕箭的文章《c#解析json字符串处理(最清晰易懂的方法)》,在此拜谢。


需求

有这样一段json,需要获取这段json里面的title_list内的信息。

{
    "alipay_ebpp_invoice_title_list_get_response": {
        "code": "10000",
        "msg": "Success",
        "title_list": [
            {
                "user_id": "2088000000000000",
                "title_name": "网络技术有限公司",
                "title_type": "CORPORATION",
                "is_default": true,
                "user_mobile": "13900000000",
                "tax_register_no": "123",
                "user_address": "杭州市 西湖区 天目山路 黄龙时代广场",
                "open_bank_name": "中国建设银行",
                "open_bank_account": "6332000010001000"
            }
        ]
    },
    "sign": "EEEEEEEEEEEEEEEEEEEEEEREEEEEEEEEEE"
}

方案

1

先将JSON转换为string字符串,各种给双引号加反斜杠”\“。提供一个神器JSON压缩转义的网站,操作如图:
JSON压缩转义
转义之后可以直接赋值给字符串。

2

C#内应该添加引用:using Newtonsoft.Json;

3

将JSON转换为实体类,这里要介绍第二个神器JSON生成实体类,操作如图:
JSON生成实体类

4

把生成的实体类复制到我们的代码中即可

public class Title_list
{
    /// <summary>
    /// 2088000000000000
    /// </summary>
    public string user_id { get; set; }
    /// <summary>
    /// 网络技术有限公司
    /// </summary>
    public string title_name { get; set; }
    /// <summary>
    /// CORPORATION
    /// </summary>
    public string title_type { get; set; }
    /// <summary>
    /// Is_default
    /// </summary>
    public bool is_default { get; set; }
    /// <summary>
    /// 13900000000
    /// </summary>
    public string user_mobile { get; set; }
    /// <summary>
    /// 123
    /// </summary>
    public string tax_register_no { get; set; }
    /// <summary>
    /// 杭州市 西湖区 天目山路 黄龙时代广场
    /// </summary>
    public string user_address { get; set; }
    /// <summary>
    /// 中国建设银行
    /// </summary>
    public string open_bank_name { get; set; }
    /// <summary>
    /// 6332000010001000
    /// </summary>
    public string open_bank_account { get; set; }
}

public class Alipay_ebpp_invoice_title_list_get_response
{
    /// <summary>
    /// 10000
    /// </summary>
    public string code { get; set; }
    /// <summary>
    /// Success
    /// </summary>
    public string msg { get; set; }
    /// <summary>
    /// Title_list
    /// </summary>
    public List<Title_list> title_list { get; set; }
}

public class Root
{
    /// <summary>
    /// Alipay_ebpp_invoice_title_list_get_response
    /// </summary>
    public Alipay_ebpp_invoice_title_list_get_response alipay_ebpp_invoice_title_list_get_response { get; set; }
    /// <summary>
    /// ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE
    /// </summary>
    public string sign { get; set; }
}

5

反序列化json字符串得到对象。

Root rb = JsonConvert.DeserializeObject<Root>(strJson);

6

处理对象,如输出user_id

string user_id = rb.alipay_ebpp_invoice_title_list_get_response.title_list[0].user_id;

7

循环获取title_list内的数据:

Title_list[] list = new Title_list[99];
int index = 0;
foreach (Title_list ep in rb.alipay_ebpp_invoice_title_list_get_response.title_list)
{   
    list[index] = new Title_list();
    list[index].user_id = ep.user_id;
    list[index].title_name = ep.title_name;
    list[index].title_type = ep.title_type;
    list[index].is_default = ep.is_default;
    list[index].user_mobile = ep.user_mobile;
    list[index].tax_register_no = ep.tax_register_no;
    list[index].user_address = ep.user_address;
    list[index].open_bank_name = ep.open_bank_name;
    list[index].open_bank_account = ep.open_bank_account;
    index = list.Length;            
}
展开阅读全文

没有更多推荐了,返回首页