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








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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 免备案cdn的有没有,免备案cdn是适用于什么行业呢[通俗易懂]

    免备案cdn的有没有,免备案cdn是适用于什么行业呢[通俗易懂]蔚可云CDN可以进行网站加速,当然不仅仅是网站,APP也是可以进行加速,提高访问速度提升用户体验,CDN对于互联网公司是离不开的,在一定程度上可有效促进用户的转化,当然CDN还可以用于防御DDOS与CC攻击。那么问题来了,如果是没有备案的网站能不能进行CDN加速呢?大家都知道,随着互联网的发展,必须对其进行规范化,根据工信部的要求,如果你的域名没进行备案,还没取得ICP备案号,那你的网站在国内可能会被禁止用户无法打开的。当然也有例外,蔚可云就可提供免备案的CDN加速产品,支持3…

    2022年9月10日
    3
  • 图像文字识别(四):java调用tess4j识别图像文字

    图像文字识别(四):java调用tess4j识别图像文字

    2021年4月9日
    299
  • Django(71)图片处理器django-imagekit [通俗易懂]

    Django(71)图片处理器django-imagekit [通俗易懂]#介绍ImageKit是用于处理图像的Django应用程序。如果需要从原图上生成一个长宽为50×50的图像,则需要ImageKit。ImageKit附带了一系列图像处理器,用于调整大小和裁剪等常见

    2022年7月30日
    6
  • 有序的Map集合_map集合特点

    有序的Map集合_map集合特点我们通常使用的Map集合是HashMap,在大多数情况下HashMap可以满足我们的要求,但是HashMap有一个缺点:HashMap是无序的,即其迭代顺序与其key或value的大小无关。而在某些情况下,如果我们需要Map集合里的元素有序,那么HashMap是不能满足我们的要求的。那么有没有有序的Map集合呢?有,Java提供了两种有序的Map集合:LinkedHashMap和TreeM…

    2022年9月16日
    2
  • win10工作站激活码_通用破解码「建议收藏」

    win10工作站激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    182
  • dll反编译(反编译加密dll)

    DLLtoC反编译工具,它可以将DLL转换成可编译的C/C++代码。当您丢失DLL的源代码时,您可以用DLLtoC。能够把DLL转换回可编译的代码。并且具有生成数据结构和反汇编代码段的功能。和其它的反编译或反汇编工具最大的不同是:它生成的代码是可以直接编译运行的。它可以为所有数据段生成数据结构并拆解代码段。它还可以生成函数关系树,然后可以方便地导出DLL中所需的指定特征。它可以将汇编代码…

    2022年4月12日
    757

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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