因工作需要,我需要获取JSON所有键值对。

这里我使用List存储,因为有键冲突,但是要求是所有键值对都需要,不理会冲突,所以没有使用字典。

public static List<string> GetSignStr(string json, List<string> strList)
{
json = json.Replace("\r\n", string.Empty);
json = json.Replace("[", string.Empty);
json = json.Replace("]", string.Empty);
JObject o = JObject.Parse(json);
foreach (var x in o)
{
if (x.Value.GetType() == typeof(JObject) || (x.Value.GetType() == typeof(JArray)))
GetSignStr(x.Value.ToString(), strList);//递归
else
strList.Add(x.Key + "=" + x.Value.ToString() + "&");//这里x.Key则为键,x.Value为值。可以选择使用字典
}
return strList;
}

传入的是JSON字符串,以及一个存储的List。

调用方式:

List<string> listStr = new List<string>();//
listStr = GetSignStr(jsonStr, listStr);

补充:

定义一个键值对的类进行存储:

public class KeyValue
{
public string key { get; set; }
public string value { get; set; }
}

public static List<KeyValue> DG(string json,List<KeyValue> strList)
{
json=json.Replace("\r\n",string.Empty);
json = json.Replace("[", string.Empty);
json = json.Replace("]", string.Empty);
var o = JObject.Parse(json);
foreach (var x in o)
{
if (x.Value.GetType() == typeof(JObject) || (x.Value.GetType() == typeof(JArray)))
{
DG(x.Value.ToString(), strList);
}
else
{
KeyValue keyValue = new KeyValue();
keyValue.key = x.Key;
keyValue.value = x.Value.ToString();
strList.Add(keyValue);
}

}
return strList;
}

调用方式:

string json=“”;//这个为你要解析的JSON字符串

List<KeyValue> jsonList = new List<KeyValue>();
jsonList = DG(json,jsonList);

结果图:

遍历出来想怎么样就是你的事了。

foreach (var tmp in jsonList)
{
Console.WriteLine(tmp.key+":"+tmp.value);
}

转载于:https://www.cnblogs.com/tofumoxi/p/10736109.html

C#递归获取JSON所有键值对相关推荐

  1. map中获取数组_如何从php多维数组中获取特定的键值?

    点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网      源 / www.php.cn 在这篇文章中,我们将给大家介绍如何在php中从多维数组中获取特定的键值数组.这里我们将使用a ...

  2. Redis中字符串string数据类型(保存(设置键值、过期时间、设置多个键值、追加值)、获取(获取单一键值、获取多个键值))

    字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的V ...

  3. python读取json数据的key值_jquery中怎么获取json的key值?

    展开全部 获取方法如下:用jquery回调函数完成. $.each(json, function(i) {    console.log(i); //获取键值 console.log(json[i]) ...

  4. android键值列表,Android Json不规则键值解析与转换

    简述 在Android开发的时候,通过网络请求获取后台返回数据与上传数据给后台是十分常见的.有时候,我们会遇到需要解析和传递特殊键值的Json,对于这种情况,引出了本次要讲诉的内容. Json数据解析 ...

  5. java 遍历map获取下标_java 遍历Map并且获取其中的键值

    import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.M ...

  6. JAVA获取json中的值

    先导入json格式化的依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson ...

  7. redis获取存在的键值_Redis 分布式锁、限流

    谈及分布式系统的时候,很多企业都会使用到分布式锁,分布式锁的实现方案目前主要是存在两种,redis实现和zookeeper实现. redis实现方案是多个线程相互竞争,在redis的某一个节点内创建一 ...

  8. Oracle怎么获取json类型字符串值,sql解析json格式字段 如何获取json中某个字段的值?...

    java将json数据解析为sql语句?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想起那杯水时,可惜它已经变得冰冷刺骨. 图片中是json数据,每个数据的开头都有表名称,操作类型 ...

  9. JSON数据格式(键值对)(一)

    简介 是一种数据格式,结构为键值对的方式存储和传输,例如 第一个JSON格式 JSON 对象在大括号({})中书写: 对象可以包含多个名称/值对: { "name":"这 ...

最新文章

  1. java基础学完就直接学ssm_java基础学习笔记3(SSM基础)
  2. MySQL varchar和char类型
  3. Dijkstra 最短路
  4. h5获取http请求头_React 前端获取http请求头信息
  5. 何必言精通——十年杂感
  6. Linux 下的0 1 2特殊文件描述符~
  7. java jquery jsonp 跨域_Jquery跨域调用(JSONP)遇到error问题的解决
  8. 谁是“顶会狂魔”?周明、张潼等上榜,清华第四,北大第六 | 2018 ML和NLP顶会论文统计出炉...
  9. ai背景合成_视频素材不好找!图片也能生成视频啦,AI剪辑助力原创短视频创作...
  10. MySQL高级建表语句
  11. PVE系列教程(三)、安装黑威联通
  12. operands could not be broadcast together with shapes
  13. 【可解释机器学习】-线性回归案例【基础版】(python代码)
  14. latex编辑公式好用的在线网址
  15. css中margin和padding设置成百分比时参照物是谁
  16. http://www.cnblogs.com/Jackie-zhang/p/6071769.html
  17. 100、基于51单片机数码管温控 温度控制风扇系统设计
  18. SAP CEWB 批量修改 工艺路线 和 BOM
  19. 火车票软件哪个好用_订车票的软件哪个好?2018十大购买车票APP排行榜推荐
  20. 关于Windows Build版本号

热门文章

  1. HDU 1241Oil Deposits---(dfs)
  2. Java学习—— for循环
  3. TSQL--NESTED LOOPS JOIN
  4. Web前端优化最佳实践及工具集锦
  5. 弹出无toobar的网页
  6. javascript控制validator
  7. 如何搭建python框架_从零开始:写一个简单的Python框架
  8. oracle改用户名名字,Oracle中如何更改用户名
  9. java hdfs 新建目录_如何用java在hdfs中创建一个新目录?
  10. 实现断网收银_便利店收银系统,可以实现简单又好用!