当前位置:网站首页>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
边栏推荐
- 2022 Android interview summary (with interview questions | source code | interview materials)
- BOW/DOM(上)
- API for JD.com to obtain historical price information of commodities
- GateWay实现负载均衡
- TestCafe之如何进行调试
- TestCafe总结
- 手把手教你学会部署Nestjs项目
- Kotlin协程:续体、续体拦截器、调度器
- 【码蹄集新手村600题】不通过字符数组来合并俩个数字
- Last write wins (discards concurrent writes)
猜你喜欢
ThreadLocal
如何识别假爬虫?
35 MySQL interview questions and diagrams, this is also easy to understand
selenium的常见方法及使用
这位985教授火了!当了10年博导,竟无一博士毕业!
The new telecom "routine", my dad was tricked!
1161. Maximum Sum of Elements in Layer: Hierarchical Traversal Application Problems
AcWing 1282. 搜索关键词 题解((AC自动机)Trie+KMP)+bfs)
21.支持向量机—核函数的介绍
基于WPF重复造轮子,写一款数据库文档管理工具(一)
随机推荐
flyway的快速入门教程
[Source code analysis] BeanFactory and FactoryBean
C# 之 扑克游戏 -- 21点规则介绍和代码实现
Flex布局详解
A common method and the use of selenium
微信小程序的路由拦截
10 Ways to Keep Your Interface Data Safe
淘宝/天猫获得淘口令真实url API
基于WPF重复造轮子,写一款数据库文档管理工具(一)
1161. Maximum Sum of Elements in Layer: Hierarchical Traversal Application Problems
All-platform GPU general AI video supplementary frame super-score tutorial
性能优化:记一次树的搜索接口优化思路
Batch (batch size, full batch, mini batch, online learning), iterations and epochs in deep learning
多主复制下处理写冲突(3)-收敛至一致的状态及自定义冲突解决逻辑
如何识别假爬虫?
如何才能真正的提高自己,成为一名出色的架构师?
浅谈网络安全之算法安全
iNeuOS工业互联网操作系统,设备运维业务和“低代码”表单开发工具
How can we improve the real yourself, become an excellent architect?
20.支持向量机—数学原理知识