c语言解析json字符串(json对象转化为字符串)

如题,根据json字符串的难易程度

大家好,又见面了,我是你们的朋友全栈君。

如题,根据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字符的集合,使用反斜线转义。








版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/127408.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ElasticSearch 集群搭建[通俗易懂]

    ElasticSearch 集群搭建[通俗易懂]介绍了ElasticSearch集群搭建方法

    2022年10月13日
  • debounce函数防抖

    debounce函数防抖实现functiondebounce(callback,time){lettimer;returnfunction(){window.clearTimeout(timer)timer=window.setTimeout(function(){callback()},time)}…

  • ds1302实时时钟lcd1602显示_电子时钟单片机

    ds1302实时时钟lcd1602显示_电子时钟单片机DS1302时钟模块LCD1602显示DS1302时钟模块相关介绍基本介绍时序图DS1302时钟模块相关介绍基本介绍DS1302可慢速充电实时时钟芯片包含实时时钟/日历和31字节的非易失性静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历可对秒,分,时,日,周,月,和年进行计数,对于小于31天的月,月末的日期自动进行调整,还具有闰年校正的功能。时钟可以采用24小时格式或带AM(上午)/PM(下午)的12小时格式。31字节的==RAM==可以用来临时保存一

    2022年10月26日
  • java mencoder_mencoder java linux[通俗易懂]

    java mencoder_mencoder java linux[通俗易懂]在执行转化的时候只能转化1分钟的影片超过1分钟影片的都不能转化。可是直接输入命令行又能全部转化。高分求解try{Runtimert=Runtime.getRuntime();Processproc=rt.exec(“mencoder”+ol…在执行转化的时候只能转化1分钟的影片超过1分钟影片的都不能转化。可是直接输入命令行又能全部转化。高分求解try{Runtimert=Runtime….

  • STUN 原理理解「建议收藏」

    STUN 原理理解「建议收藏」STUN原理理解STUN简介SimpleTraversalofUDPoverNATs,NAT的UDP的简单穿越,是一种网络协议。是客户机-服务器的一种协议,由RFC3489定义。该协议定义了一些消息格式,大体上分为Request/Response。这个协议主要作用就是可以用来在两个处于NAT路由器之后的主机之间建立UDP通信。它允许位于NAT后的客户端找出自己的公网地址,确定自己…

  • 1、Java从入门到精通

    1、Java从入门到精通将自己学习的Java基础整理出来,方便复习和记忆~~一、Java的历史1、Java开发分成了3个方向JavaSE:主要用于桌面程序的开发,学习JavaEE和JavaME的基础JavaEE:主要用于网页程序的开发JavaME:主要用于嵌入式系统程序的开发2、JavaSE平台中的lib软件包Java.lang包——语言核心包java.util包——Jav…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号