假如我们得到了一个json的数据:json===》   {"Head":{"TransCode":"X1009","TransId":"20190514145005iQXk"},"Body":{"OrderSN":"95131406006","WHSE":"aaaaa","SNs":[{"SN":"HCMPFD000621"},{"SN":"1212122"}]}}

类似这样。我们要取出来里面特定的值,而且,SNs还是一个集合。

方法如下:

string OrderSn = json["Body"]["OrderSN"].ToString();
string WHSE = json["Body"]["WHSE"].ToString();
string SNs = json["Body"]["SNs"].ToString();

SNs是一个集合,怎么取出来呢:

将json字符串解析为JToken,JObject是JToken的父类,直接使用JToken比较好用

dynamic Sns =JToken.Parse(SNs) as dynamic

  1. for (int i = 0; i < Sns.Count; i++)//获取备注里的SN
  2. {
  3.  
  4. if (Sns[i].SN.ToString() != "")
  5. {
  6. str += Sns[i].SN.ToString() + ",";
  7. }
  8. }

 这样子就可以循环出来里面的值了。

  1. HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
  2. string response = string.Empty;
  3. using (StreamReader reader = new StreamReader(httpWebResponse.GetResponseStream()))
  4. response = reader.ReadToEnd();
  5.  
  6. var j = JObject.Parse(response);
  7. string shop_name = j["Success"]["items"]["item"][]["shop_name"].ToString();//独一味日化旗舰店、、、一层层的层级关系
  1. {
  2. "Success": {
  3. "total_results": "1",
  4. "items": {
  5. "item": [{
  6. "shop_name": "独一味日化旗舰店",
  7. "serial_num": "",
  8. "order_channel": "直营网店",
  9. "updatetime": "",
  10. "总数量": "3739",
  11. "maxrowver": "",
  12. "tid_item": [{
  13. "storage_id": "1",
  14. "tid": "S17fdgfgfg0349",
  15. "pro_detail_code": "191",
  16. "book_inventory": "-5.000",
  17. "store_location": "",
  18. "pro_type": "原始产品"
  19. }, {
  20. "storage_id": "1",
  21. "tid": "S1712220000349",
  22. "pro_detail_code": "152",
  23. "book_inventory": "-4.000",
  24. "store_location": "",
  25. "pro_type": "原始产品"
  26. }]
  27. }]
  28. }
  29. }
  30. }

  上面这个是其他的厂商返回的一个Json格式的数据,现在可以是Json嵌套的还挺多,其中的一个项次还有数组,现在就是把这些数据捞出来存下来。

  1. var j = JObject.Parse(response);
    //这个就是主干的值
  2. string shop_name = j["Success"]["items"]["item"][0]["shop_name"].ToString();//独一味日化旗舰店
  3. string tid_item = j["Success"]["items"]["item"][0]["tid_item"].ToString();
    //下面是获取数组的名细可以取出来值
  4. JArray jArray = JArray.Parse(tid_item);
  5. for (int i = 0; i < jArray.Count; i++)
  6. {
  7. JObject jdata = (JObject)jArray[i];
  8. string pro_detail_code = jdata["pro_detail_code"].ToString();
  9. }

  

  1. //将数据动态插入到数组中去
    JArray jArray = JArray.Parse(tid_item);
  2. JArray arr = new JArray();
  3. for (int i = ; i < jArray.Count; i++)
  4. {
  5. JObject obj = new JObject();
  6. JObject jdata = (JObject)jArray[i];
  7. obj["linenum"] = jdata["cost_price"].ToString();
  8. obj["sku"] = jdata["sell_price"].ToString();
  9. obj["qty"] = jdata["original_price"].ToString();
  10. obj["inventoryname"] = jdata["sys_price"].ToString();
  11. obj["price"] = jdata["product_name"].ToString();
  12. arr.Add(obj);
  13. }
  14. var rss = new JObject
  15. {
  16. {"Head",new JObject
  17. {
  18. {"TransCode","X1009" },
  19. {"TransId",}
  20. }
  21. },
  22. { "Body", new JObject
  23. {
  24. {"orderno", "orderno" },
  25. {"billto","billto"},
  26. {"shipto", "shipto"},
  27. {"workid", "workid"},
  28. {"tocity", "tocity"},
  29. {"Address", "Address"},
  30. {"Contact", "Contact"},
  31. {"Tel", "Tel"},
  32. {"detail", arr }
  33. }
  34. }
  35. };

获取Json中特定的值的更多相关文章

  1. 通过YAJL获取json中的值

    这里主要是举例说明一下假设通过yajl获取json中的值. 对于array和object来说,获取的方式略有不同,详细能够參考以下的代码. 我仅仅是从网上搜集信息.知道有这么一种方法.假设还有别的方法 ...

  2. for in 循环获取json中的键(key)与值(value)

    一 .for in 循环 1.获取json中的键(key)与值(value): var data = {name:'张三',age:'20岁',sex:'男'}; for (var a in data ...

  3. C#获取json字符串指定的值

    Newtonsoft.Json在json和对象之间转化是一个非常强大的工具. 对象转化json字符串 Newtonsoft.Json.JsonConvert.SerializeObject() jso ...

  4. 获取JSON对象的属性值

    1.问题背景 有一个json对象,其中有键值对,那怎样获取json对象中属性值 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...

  5. 1.4.1 对象与JSON转化 1.4.2 JSON与List集合转化 1.1.1 获取json中的属性 day10-05

    1.1.1 对象与JSON转化 @Test public void toJSON() throws IOException{ Jedis jedis = new Jedis("192.168 ...

  6. jsp页面使用el 按key获取map中的对应值

    jsp页面使用el 按key获取map中的对应值 转自:<jsp页面使用el 按key获取map中的对应值>地址:http://blog.csdn.net/baple/article/de ...

  7. 给定桩号获取纵断面中的高程值(c# for civil3d)

    通过civil3d提供的api,也就是纵断面Profile类提供的方法---public double ElevationAt(double station),就可以很轻松的获取纵断面对象某桩号处的高 ...

  8. 在kindeditor 获取textarea 中 输入的值

    要在kindeditor 获取textarea 中 输入的值 必须在kindeditor创建的时候添加下面红色字体的代码     kindeditor创建代码如下: var editor;KindEd ...

  9. 【Java必修课】通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

随机推荐

  1. Spring MVC 笔记 概述

    学习笔记 模型:封装装程序数据 视图:渲染模型数据,一般来说就是输出HTML 控制:处理请求,构建模型并将其传递给视图进行渲染 以上三者均围绕DispatcherServlet设计,它处理所有的HTT ...

  2. Highcharts教程--把js代码从html中抽离出来,放到单独的一个js文件中。由html页面调用

    1.html页面写法 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  3. RHEL6 配置Yum库

    在/mnt目录下创建子目录“/cdrom”(用于将iso文件挂载到此目录下) 镜像状态确定为“已连接”(“已连接”未勾选的情况下无法获得iso文件) 配置自动挂载文件 (系统开机时会主动读取“/etc ...

  4. 一篇入门Node.js

    目录 1.Node.js 简介 2.Node.js NPM 3.Node.js 模块 4.Node.js 事件 5.Node.js Buffer 6.Node.js 文件系统 7.Node.js St ...

  5. 46.颜色+品牌下钻分析时按最深层metric进行排序

    主要知识点: 在做下钻分析时的排序     需求,以颜色进行bucket,这里bucket里面的doc以其各品牌的平均价格排序,     GET /tvs/sales/_search { " ...

  6. Battlestation Operational

    Battlestation Operational Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. noip模拟赛 钻石

    分析:用裸暴力可以得60分,每次dfs,看第i个盒子到底有没有钻石就行了.其实这很像0/1背包问题,只是多了一个m的限制.这要怎么办呢?因为概率是可以加减的,所以可以先不考虑m的限制,求出概率,然后d ...

  8. F1: A Distributed SQL Database That Scales GOOGLE F1 论文

    http://research.google.com/pubs/pub41344.html http://research.google.com/pubs/pub36726.html

  9. android程序在调试时出现了套接字异常“java.net.SocketException: Permission denied”该如何解决

    Socket不能对外连接,错误不会被报出,调试的时候,能看到Exception, 一般是抛出 java.net.socketexception permission denied这个异常.只要你的程序 ...

  10. 转:分布式事务之TCC服务设计和实现注意事项

    由公司微服务培训引起的一丢丢对TCC的好奇 原文:https://yq.aliyun.com/articles/609854 一.TCC简介 TCC是一种比较成熟的分布式事务解决方案,可用于解决跨库操 ...