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压缩转义的网站,操作如图:
转义之后可以直接赋值给字符串。
2
C#内应该添加引用:using Newtonsoft.Json;
3
将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;
}