精华内容
下载资源
问答
  • Linq to JSON是用来操作JSON对象的.可以用于快速查询,修改和创建JSON对象.当JSON对象内容比较复杂,而我们仅仅需要其中一小部分数据时,可以考虑使用Linq to JSON来读取和修改部分数据而非反序列化全部.二.创建...

    Linq to JSON是用来操作JSON对象的.可以用于快速查询,修改和创建JSON对象.当JSON对象内容比较复杂,而我们仅仅需要其中的一小部分数据时,可以考虑使用Linq to JSON来读取和修改部分的数据而非反序列化全部.

    二.创建JSON数组和对象

    在进行Linq to JSON之前,首先要了解一下用于操作Linq to JSON的类.

    类名说明
    JObject
     用于操作JSON对象
    JArray
     用语操作JSON数组
    JValue
     表示数组中的值
    JProperty
     表示对象中的属性,以"key/value"形式
    JToken
     用于存放Linq to JSON查询后的结果


    1.创建JSON对象

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

                JObject staff = new JObject();
    staff.Add(new JProperty("Name", "Jack"));
    staff.Add(new JProperty("Age", 33));
    staff.Add(new JProperty("Department", "Personnel Department"));
    staff.Add(new JProperty("Leader", new JObject(new JProperty("Name", "Tom"), new JProperty("Age", 44), new JProperty("Department", "Personnel Department"))));
    Console.WriteLine(staff.ToString());

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    结果:

    88aae223b9a24d0a1755f4ee5a0d6e7b.png

    除此之外,还可以通过一下方式来获取JObject.JArray类似。

    方法  说明
    JObject.Parse(string json)
    json含有JSON对象的字符串,返回为JObject对象
    JObject.FromObject(object o)

    o为要转化的对象,返回一个JObject对象

    JObject.Load(JsonReader reader)
    reader包含着JSON对象的内容,返回一个JObject对象

    2.创建JSON数组

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

                JArray arr = new JArray();
    arr.Add(new JValue(1));
    arr.Add(new JValue(2));
    arr.Add(new JValue(3));
    Console.WriteLine(arr.ToString());

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    结果:

    08efc45f16171bb6127b24e62e4b60df.png

    三.使用Linq to JSON

    1.查询
    首先准备Json字符串,是一个包含员工基本信息的Json

    string json = "{\"Name\" : \"Jack\", \"Age\" : 34, \"Colleagues\" : [{\"Name\" : \"Tom\" , \"Age\":44},{\"Name\" : \"Abel\",\"Age\":29}] }";

    ①获取该员工的姓名

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

                //将json转换为JObject
    JObject jObj = JObject.Parse(json);
    //通过属性名或者索引来访问,仅仅是自己的属性名,而不是所有的
    JToken ageToken = jObj["Age"];
    Console.WriteLine(ageToken.ToString());

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    结果:

    3ad6c152e44f984d9bed55322ee0dbd5.png

    ②获取该员工同事的所有姓名

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

                //将json转换为JObject
    JObject jObj = JObject.Parse(json);
    var names=from staff in jObj["Colleagues"].Children()
    select (string)staff["Name"];
    foreach (var name in names)
    Console.WriteLine(name);

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    "Children()"可以返回所有数组中的对象

    结果:

    d101676cecaae4e88b0e397017d12067.png

    2.修改

    ①现在我们发现获取的json字符串中Jack的年龄应该为35

                //将json转换为JObject
    JObject jObj = JObject.Parse(json);
    jObj["Age"] = 35;
    Console.WriteLine(jObj.ToString());

    结果:

    2ae494c3825731b20906a1d877460e85.png

    注意不要通过以下方式来修改:

                JObject jObj = JObject.Parse(json);
    JToken age = jObj["Age"];
    age = 35;

    ②现在我们发现Jack的同事Tom的年龄错了,应该为45

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

                //将json转换为JObject
    JObject jObj = JObject.Parse(json);
    JToken colleagues = jObj["Colleagues"];
    colleagues[0]["Age"] = 45;
    jObj["Colleagues"] = colleagues;//修改后,再赋给对象
    Console.WriteLine(jObj.ToString());

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    结果:

    902a85f84215598b29ac7f50926b136b.png

    3.删除
    ①现在我们想删除Jack的同事

                JObject jObj = JObject.Parse(json);
    jObj.Remove("Colleagues");//跟的是属性名称
    Console.WriteLine(jObj.ToString());

    结果:

    46f269b9cbbee5c84171ccd0a67b99ad.png

    ②现在我们发现Abel不是Jack的同事,要求从中删除

                JObject jObj = JObject.Parse(json);
    jObj["Colleagues"][1].Remove();
    Console.WriteLine(jObj.ToString());

    结果:

    54e55e75410fa25f0d64f19f5de75959.png

    4.添加
    ①我们发现Jack的信息中少了部门信息,要求我们必须添加在Age的后面

                //将json转换为JObject
    JObject jObj = JObject.Parse(json);
    jObj["Age"].Parent.AddAfterSelf(new JProperty("Department", "Personnel Department"));
    Console.WriteLine(jObj.ToString());

    结果:

    0d4f5ed36dfa6028a350c892fff8082f.png

    ②现在我们又发现,Jack公司来了一个新同事Linda

                //将json转换为JObject
    JObject jObj = JObject.Parse(json);
    JObject linda = new JObject(new JProperty("Name", "Linda"), new JProperty("Age", "23"));
    jObj["Colleagues"].Last.AddAfterSelf(linda);
    Console.WriteLine(jObj.ToString());

    结果:

    f8a6f191896421dac528f9851f890eba.png

    四.简化查询语句

    使用函数SelectToken可以简化查询语句,具体:
    ①利用SelectToken来查询名称

                JObject jObj = JObject.Parse(json);
    JToken name = jObj.SelectToken("Name");
    Console.WriteLine(name.ToString());

    结果:

    c876b033887ea885eb7d26ea4ec829a4.png

    ②利用SelectToken来查询所有同事的名字

                JObject jObj = JObject.Parse(json);
    var names = jObj.SelectToken("Colleagues").Select(p => p["Name"]).ToList();
    foreach (var name in names)
    Console.WriteLine(name.ToString());

    结果:

    f6173eb0862cebf22267ed8b5e0cb419.png

    ③查询最后一名同事的年龄

                //将json转换为JObject
    JObject jObj = JObject.Parse(json);
    var age = jObj.SelectToken("Colleagues[1].Age");
    Console.WriteLine(age.ToString());

    结果:

    4095ab0a27f6e9c5f3865baac50eb1b4.png

    FAQ

    1.如果Json中的Key是变化的但是结构不变,如何获取所要的内容?

    例如:

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

     1 {
    2 "trends":
    3 {
    4 "2013-05-31 14:31":
    5 [
    6 {"name":"我不是谁的偶像",
    7 "query":"我不是谁的偶像",
    8 "amount":"65172",
    9 "delta":"1596"},
    10 {"name":"世界无烟日","query":"世界无烟日","amount":"33548","delta":"1105"},
    11 {"name":"最萌身高差","query":"最萌身高差","amount":"32089","delta":"1069"},
    12 {"name":"中国合伙人","query":"中国合伙人","amount":"25634","delta":"2"},
    13 {"name":"exo回归","query":"exo回归","amount":"23275","delta":"321"},
    14 {"name":"新一吻定情","query":"新一吻定情","amount":"21506","delta":"283"},
    15 {"name":"进击的巨人","query":"进击的巨人","amount":"20358","delta":"46"},
    16 {"name":"谁的青春没缺失","query":"谁的青春没缺失","amount":"17441","delta":"581"},
    17 {"name":"我爱幸运七","query":"我爱幸运七","amount":"15051","delta":"255"},
    18 {"name":"母爱10平方","query":"母爱10平方","amount":"14027","delta":"453"}
    19 ]
    20 },
    21 "as_of":1369981898
    22 }

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    其中的"2013-05-31 14:31"是变化的key,如何获取其中的"name","query","amount","delta"等信息呢?
    通过Linq可以很简单地做到:

    35d96c31f6ca487e3ae6955ebc9fcf20.png

    35d96c31f6ca487e3ae6955ebc9fcf20.png

     var jObj = JObject.Parse(jsonString);
    var tends = from c in jObj.First.First.First.First.Children()
    select JsonConvert.DeserializeObject(c.ToString());
    public class Trend
    {
    public string Name { get; set; }
    public string Query { get; set; }
    public string Amount { get; set; }
    public string Delta { get; set; }
    }

    出处:https://www.cnblogs.com/klsw/p/5904573.html

    版权申明:本文来源于网友收集或网友提供,如果有侵权,请转告版主或者留言,本公众号立即删除。

    3b543f4479302c1181b68b5f781ad809.gif

    展开全文
  • js获取json对象的key值

    2015-09-10 16:22:00
    if(item==key){ //item 表示Json串中属性,如'name' var jValue=jsonObj[item];//key所对应value alert(jValue); } } //3、直接获取 alert(jsonObj[''+key+'']); }   ...
     <script type="text/javascript">
    	 getJson('age');
    
    	function getJson(key){
    		var jsonObj={"name":"傅红雪","age":"24","profession":"刺客"};
    		//1、使用eval方法	
    		var eValue=eval('jsonObj.'+key);
    		alert(eValue);
    		//2、遍历Json串获取其属性
    		for(var item in jsonObj){
    			if(item==key){	//item 表示Json串中的属性,如'name'
    				var jValue=jsonObj[item];//key所对应的value
    				alert(jValue);
    			}
    		}
    		//3、直接获取
    		alert(jsonObj[''+key+'']);
    	}
     </script>


    转载于:https://my.oschina.net/hehongbo/blog/504523

    展开全文
  • *注意 该方法只获取第一次出现的key对应value public static String getJsonValue(String key, String jsonString) { //使用非贪婪模式 StringBuffer regex = new StringBuffer(); regex.append("\""); ...

    *注意  该方法只获取第一次出现的key对应的value 

     public static String getJsonValue(String key, String jsonString) {
            //使用非贪婪模式
            StringBuffer regex = new StringBuffer();
            regex.append("\"");
            regex.append(key);
            regex.append("\":\"(.*?)\\\"");
            Matcher matcher = Pattern.compile(regex.toString()).matcher(jsonString);
            String ret = null;
            while (matcher.find()) {
                ret = matcher.group(1);
                if (ret != null) {
                    break;
                }
            }
            return ret;
        }

    测试

     public static void main(String[] args) {
            String parem = "{\"appId\":\"123\",\"age\":0,\"name\":\"string\",\"prive\":{\"asg\":\"789\",\"sex\":\"string\"}}";
            System.out.println(getJsonValue("appId", parem));
        }

     

    结果

    展开全文
  • JS获取JSON对象键值对中key值的方法

    万次阅读 2019-03-06 17:18:19
    一、使用 Object.keys(obj)方法获取 JSON对象的key值。 Object.keys( ) 会返回一个数组,数组中是这个对象的key值列表。 Polyfill 要在原生不支持旧环境中添加兼容Object.keys,请复制以下代码段: if ...

    一、使用 Object.keys(obj)方法获取 JSON对象的key值。

         

    Object.keys( ) 会返回一个数组,数组中是这个对象的key值列表。

    Polyfill

    要在原生不支持的旧环境中添加兼容的Object.keys,请复制以下代码段:

    if (!Object.keys) {
      Object.keys = (function () {
        var hasOwnProperty = Object.prototype.hasOwnProperty,
            hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
            dontEnums = [
              'toString',
              'toLocaleString',
              'valueOf',
              'hasOwnProperty',
              'isPrototypeOf',
              'propertyIsEnumerable',
              'constructor'
            ],
            dontEnumsLength = dontEnums.length;
     
        return function (obj) {
          if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object');
     
          var result = [];
     
          for (var prop in obj) {
            if (hasOwnProperty.call(obj, prop)) result.push(prop);
          }
     
          if (hasDontEnumBug) {
            for (var i=0; i < dontEnumsLength; i++) {
              if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]);
            }
          }
          return result;
        }
      })()
    };
    

     

    展开全文
  • 请问大佬们,Js 怎么获取json对象所有key及根据动态key获取(根据key值获取相应value),将key,value在页面上显示如下图`var Test ={"ftc下限": 30,"参考点01图像坐标": [0, 0],"参考点01物理坐标": [0, 0],...
  • 来源:Python数据科学作者:东哥起飞调用API和文档数据库会返回嵌套的JSON对象,当我们使用Python尝试将嵌套结构中键转换为列时,数据加载到pandas中往往会得到如下结果:df=pd.DataFrame.from_records(results[...
  • JSON简介JSON(JavaScript Object Notation)是一种轻量级数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999一...
  • 所在项目组,不对应该说是小作坊,根据甲方爸爸要求需要接入该集中项目,其实就是一个统一API网关(当然现在本来就是用统一API网关,只是这次更集中话了而已)。因此需要我们配合测试API是否正常,数据是否...
  • 平时处理Json对象时,想获取JSON对象中获取指定key的值,如下图,想直接取到"result"、"status"的值。 { "code":0, "message":"ok", "body":{ "result":"success", "status":"1" } } 下面以get类型http请求...
  • json对象要回去某个属性的值,一般都是根据键值key来获取,json.a="",但是有时候,需要动态的传键值Key来获取对应的属性值 实现方式: 1、获取json多有的key值,作为一个数组 var data={k:'aa',b:'aaa'}; var ...
  • C#获取动态key的json对象的值

    千次阅读 2016-10-20 15:56:34
    C#获取json动态key的值如果直接获取某个json数组中的元素将得到如下的json{ "44": { "height": 25, "appeared": -70000000, "length": 44, "order": "saurischia", "vanished": -70000000,
  • 问题描述 如果直接获取某个json数组中元素将得到如下json ...这个json对象如果使用C#类来反序列化,那么实体类结构如下,实体类类名需要与json对象key相同才可以使用json反序列化,这样对程序造成了极大
  • javascript获取json对象的key名称的两种方法 数据处理中,你可能接收到一个不确定内容格式的json对象,然后要把key的值提取出来。今天试过两种可以提取json key的方法,均可以正常工作。 先看第一种方法 jsonObj ...
  • jquery获取json对象的key小技巧 比如有一个json var json = {"name" : "Tom", "age" : 18}; 想分别获取它的key 和 value 小技巧来啦 for (var key in json) { console.log(key); //获取key值 ...
  • 获取json对象的key小技巧

    千次阅读 2019-04-28 23:49:26
    比如有一个json ...想分别获取的key 和 value for (var key in json) { console.log(key); //获取key值 console.log(json[key]); //获取对应value } 还要一种方法用jquery回调函数完成 ...
  • jQuery怎么获取json对象数组中的key

    千次阅读 2019-03-04 22:01:19
    jQuery怎么获取json对象数组中的key var json = {“name” : “Tom”, “age” : 18}; 想分别获取它的key 和 value for (var key in json) { console.log(key); //获取key值 console.log(json[key]); //获取对应...
  • JS文件中定义json对象: var jsonObj = { 'param1': 22 } 控制台输出: ...给json对象添加动态获取的值 var test = ['aad', 'adsf'] for (let i = 0; i < test.length; i++) { jsonObj[t...
  • js获取json对象的key和value

    千次阅读 2019-03-25 09:43:27
    原文链接 //比如有一个json ...//想分别获取的key 和 value //小技巧来啦 for (var key in json) { console.log(key); //获取key值 console.log(json[key]); //获取对应value } //还要一种方...
  • 下面小编就为大家带来一篇js遍历json对象所有key及根据动态key获取值的方法(必看)。小编觉得挺不错,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 比如有一个json var json = {"name" : ...想分别获取的key 和 value for (var key in json) { console.log(key); //获取key值 console.log(json[key]); //获取对应value } 还要一种方法用jquer...
  • Js代码 <script type="text/javascript"> getJson('age');...function getJson(key){ var jsonObj={"name":"张三","age":"24","profession":"工程师"}; //1、使用eval方法 var eValue=eval('...
  • Js代码 <script type="text/javascript">...function getJson(key){ var jsonObj={"name":"张三","age":"24","profession":"工程师"}; 遍历Json获取其属性 for(var item in jsonObj){ ...
  • 不废话了,直接贴代码了,通过示例一讲解JS根据key值获取URL中参数及把URL参数转换成json对象,示例二讲解js获取url传递参数,具体内容请看下文 示例一: //把url参数部分转化成json对象  ...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 323
精华内容 129
关键字:

获取json对象key的值