当前位置:网站首页>c语言解析json字符串(json对象转化为字符串)
c语言解析json字符串(json对象转化为字符串)
2022-07-31 18:40:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
如题,根据json字符串的难易程度,C#提供的对应解析方法也不同,现做简单的归类总结:
一,对于最简单的json类型,可以使用如下方法
1.使用JsonReader类,示例代码如下
string meetingInfo = @”{“”meetingid”” : “”123″”, “”meetingname”” : “”abc””}”;
JsonReader reader = new JsonTextReader(new StringReader(meetingInfo)); while (reader.Read()) { Console.WriteLine(reader.TokenType + “\n” + reader.ValueType + “\n” + reader.Value); }
2.使用JObject类,示例代码如下:
string meetingInfo = @”{“”meetingid”” : “”123″”, “”meetingname”” : “”abc””}”;
JObject jm = JObject.Parse(meetingInfo); string[] meetings = jm.Properties().Select(item => item.Value.ToString()).ToArray();
二,对于复杂的json类型,使用如下方法
1.使用JArray类(主要针对数组形式的json字符串),示例代码如下:
stringresultInfo = @”[{“id”:”123″,”name”:”abc”},{ “id”:”234″,”name”:”def”}]”;
JArray jf = (JArray)JsonConvert.DeserializeObject(resultInfo); fileid = jf[0][“id”].ToString(); filename = jf[0][“name”].ToString();
2.使用JObject类(主要是嵌套类型),示例代码如下:
string resultInfo = @”{“meeting”:{“id”:”123″,”name”:”abc”}}”;
JObject jo = (JObject)JsonConvert.DeserializeObject(resultInfo);
string zone = jo[“meeting“][“id“].ToString(); string zone_en = jo1[“meeting“][“name“].ToString();
三,使用Newtonsoft.Json命名空间下的方法,示例代码如下:
private bool GetParameters() { try { var q = JsonConvert.DeserializeObject<ProtocolTO>(parameters); if (q == null) return false; id = q.id; action = q.action; fileid = q.fileid; meetingid = q.meetingid; type = q.type; sourceid = q.sourceid; status = q.status; } catch { return false; } return true; } public class ProtocolTO { public string id { get; set; } public string meetingid { get; set; } public string fileid { get; set; } public string sourceid { get; set; } public string app { get; set; } public string status { get; set; } public string action { get; set; } public string type { get; set; } }
附录
json格式:
1、对象是一个无序的“‘名称/值’对”集合。 例子:表示人的一个对象: {“姓名” : “abc”,”年龄” : “20”} 2、数组是值(value)的有序集合。 例子:学生对象 {“学生” :[{“姓名” : “小明” , “年龄” : “15”},{“姓名” : “tom” , “年龄” : “16”}]} json 对象数组:[{ “姓名” : “小明” , “年龄” : “15”},{ “姓名” : “tom” , “年龄” : “16”}] 3、值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。 4、字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127408.html原文链接:https://javaforall.cn
边栏推荐
- 学生管理系统第一天:完成登录退出操作逻辑 PyQt5 + MySQL5.8
- MySQL---aggregate function
- 【Yugong Series】July 2022 Go Teaching Course 023-List of Go Containers
- 手把手教你学会部署Nestjs项目
- 认识异常 (看完这篇你就懂了)
- 【PIMF】OpenHarmony 啃论文俱乐部—盘点开源鸿蒙三方库【3】
- 【luogu P8326】Fliper (Graph Theory) (Construction) (Eulerian Circuit)
- 杰理语音芯片ic玩具芯片ic的介绍_AD14NAD15N全系列开发
ojdbc8 "Recommended Collection"- 无主复制系统(3)-Quorum一致性的局限性
猜你喜欢

Go1.18升级功能 - 模糊测试Fuzz 从零开始Go语言

MySQL---子查询

IP protocol from 0 to 1

1161. Maximum Sum of Elements in Layer: Hierarchical Traversal Application Problems

Golang 小数操作之判断几位小数点与四舍五入

MATLAB程序设计与应用 2.4 MATLAB常用内部函数

After Effects tutorial, How to adjust overexposed snapshots in After Effects?

How can we improve the real yourself, become an excellent architect?

架构师04-应用服务间加密设计和实践
![[TypeScript] OOP](/img/d7/b3175ab538906ac1b658a9f361ba44.png)
[TypeScript] OOP
随机推荐
MySQL - single function
如何识别假爬虫?
35道MySQL面试必问题图解,这样也太好理解了吧
杰理语音芯片ic玩具芯片ic的介绍_AD14NAD15N全系列开发
Bika LIMS 开源LIMS集—— SENAITE的使用(检测流程)
MATLAB程序设计与应用 2.4 MATLAB常用内部函数
Jiuqi ny3p series voice chip replaces the domestic solution KT148A, which is more cost-effective and has a length of 420 seconds
Architect 04 - Application Service Encryption Design and Practice
获取抖音视频详情 API
移动web开发02
Verilog实现占空比为5/18的9分频
Golang——从入门到放弃
Flex布局详解
Golang 小数操作之判断几位小数点与四舍五入
Given an ip address, how does the subnet mask calculate the network number (how to get the ip address and subnet mask)
idea中搜索具体的字符内容的快捷方式
[Source code analysis] BeanFactory and FactoryBean
多线程之锁
Write a database document management tool based on WPF repeating the wheel (1)
【码蹄集新手村600题】不通过字符数组来合并俩个数字