深圳全飞鸿

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 171|回复: 6
打印 上一主题 下一主题

Newtonsoft.Json的 JsonConvert

[复制链接]

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
跳转到指定楼层
楼主
发表于 2024-11-2 17:28:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 syant 于 2024-11-2 17:45 编辑

$emptyObject = new stdClass();



JSON 字符串转对象:
  1. string jsonString = "{\"Name\":\"John\", \"Age\":30}";
  2. Person person = JsonConvert.DeserializeObject<Person>(jsonString);
复制代码
JSON 字符串转动态对象:
  1. string jsonString = "{\"Name\":\"John\", \"Age\":30}";
  2. dynamic obj = JsonConvert.DeserializeObject(jsonString);
  3. Console.WriteLine(obj.Name); // 输出: John
复制代码
JSON 字符串转字典:
  1. string jsonString = "{\"Name\":\"John\", \"Age\":30}";
  2. Dictionary<string, object> dict = JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonString);
  3. Console.WriteLine(dict["Name"]); // 输出: John
复制代码
JSON 字符串转列表:
  1. string jsonString = "[{\"Name\":\"John\", \"Age\":30}, {\"Name\":\"Jane\", \"Age\":25}]";
  2. List<Person> people = JsonConvert.DeserializeObject<List<Person>>(jsonString);
复制代码
回复

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
沙发
 楼主| 发表于 2024-11-2 17:29:51 | 只看该作者
Newtonsoft.Json的 JsonConvert可以传两层json的字符串吗?


假设我们有以下嵌套的 JSON 字符串:
  1. {
  2.     "Name": "John",
  3.     "Age": 30,
  4.     "Address": {
  5.         "Street": "123 Main St",
  6.         "City": "Anytown",
  7.         "ZipCode": "12345"
  8.     }
  9. }
复制代码
定义对应的 C# 类
首先,我们需要定义与 JSON 结构相对应的 C# 类:
  1. public class Address
  2. {
  3.     public string Street { get; set; }
  4.     public string City { get; set; }
  5.     public string ZipCode { get; set; }
  6. }

  7. public class Person
  8. {
  9.     public string Name { get; set; }
  10.     public int Age { get; set; }
  11.     public Address Address { get; set; }
  12. }
复制代码


回复 支持 反对

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
板凳
 楼主| 发表于 2024-11-2 17:34:20 | 只看该作者
Newtonsoft.Json的 JsonConvert可以解析这样的字符串吗
  1. {
  2.     "Name": "John",
  3.     "Age": 30,
  4.     "Address": [ "Street", "123 Main St"]
  5. }
复制代码
定义对应的 C# 类
首先,我们需要定义与 JSON 结构相对应的 C# 类:
  1. public class Person
  2. {
  3.     public string Name { get; set; }
  4.     public int Age { get; set; }
  5.     public List<string> Address { get; set; }
  6. }
复制代码


回复 支持 反对

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
地板
 楼主| 发表于 2024-11-2 17:44:46 | 只看该作者
验证总结:
1、login函数
用对象接受,data为[]和{}应该都是可以的
  1. public class ResultResponse
  2.     {
  3.         public String code { get; set; }
  4.         public String msg { get; set; }
  5.         public object data { get; set; }
  6. }
复制代码
2、GetLoginUser
是对象{"id":1,"username":"admin","nickname":"Admin"}, et
没有res和msg, 直接用对象接受
  1. string rsc = client.GetLoginUser(Global.CurrentUser.Account);
  2.                         if (!rsc.Contains("ERROR:"))
  3.                         {
  4.                             FaAdmin fa = JsonHelper.JSON2Model<FaAdmin>(rsc);
复制代码


回复 支持 反对

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
5#
 楼主| 发表于 2024-11-2 17:49:18 | 只看该作者
3、GetDepts
返回的数据是[{},{},{}]
用List<对象>承接
  1. List<FaLabTree> faDepts = WebserviceUtil.GetDepts(json);
复制代码
4、GetDataBySql
返回的数据是[{},{},{}]
也可以用DataTable承接
  1. DataTable vars = null;
  2.                 vars = Util.WebserviceUtil.GetDataBySql(sql);
  3.                 if (vars != null)
  4.                 {
  5.                     for (int i = 0; i < vars.Rows.Count; i++)
  6.                     {
  7.                         DataRow row = vars.Rows[i];
  8.                         string[] items = new string[] { row[0].ToString(), row[1].ToString() };
  9.                         ListViewItem item = new ListViewItem(items);
  10.                         listView2.Items.Add(item);
  11.                     }
复制代码


回复 支持 反对

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
6#
 楼主| 发表于 2024-11-2 18:18:31 | 只看该作者
5、GetBarcodeTemplateBase
直接用对象承接
  1. FaBarcodetemplate faBarcodetemplate =  WebserviceUtil.GetBarcodeTemplateBase(tempid);
复制代码
引入了一个可空
public int? template_permax { get;set;}

6、GetBarcodeTemplateBaseByQueryPage

返回多行,用DataTable承接
  1. DataTable dtInfo = WebserviceUtil.GetBarcodeTemplateBaseByQueryPage(pageCurrent.ToString(), pageSize.ToString(), querys);
  2.             
复制代码


7、GetBarcodeTemplateColumnsByTmpId
返回的是[{},{},{}]
用List<FaBarcodetemplatecolumns> 承接

8、GenerateBarcode
我已改为$json=array();
                $json["code"]=$res;
                $json["msg"]=$msg;
                $json["data"]=$data;
??是不是第一次转化后,直接读就可以了?验证List<Dictionary<string, object>> list = (List<Dictionary<string, object>>)rr.data;
  1. ResultResponse rr = WebserviceUtil.GenerateBarcode(pr1);
  2.                     if (rr.code.Equals("error"))
  3.                     {
  4.                         throw new Exception(rr.msg);
  5.                     }
  6.                     List<Dictionary<string, object>> list = JsonHelper.JSON2Model<List<Dictionary<string, object>>>(rr.data.ToString());
  7.                     if (list.Count <= 0)
  8.                     {
  9.                         throw new Exception(i+"没生成标签数据");
  10.                     }
复制代码




回复 支持 反对

使用道具 举报

228

主题

466

帖子

2184

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2184
7#
 楼主| 发表于 2024-11-2 18:24:41 | 只看该作者
8、GetLastPrintList
数据结构:{"Table":[],"Table1":[{"xt":"0"}]}
两个[],直接用Dataset承接
  1. DataSet ds = WebserviceUtil.GetLastPrintList(PintinputReg.TableName, ReferPrintStr);
  2.                         DataTable dtLast = ds.Tables[0];
复制代码

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|nagomes  

GMT+8, 2025-5-4 21:03 , Processed in 0.025892 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表