获取Json中特定的值
假如我们得到了一个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
for (int i = 0; i < Sns.Count; i++)//获取备注里的SN
{ if (Sns[i].SN.ToString() != "")
{
str += Sns[i].SN.ToString() + ",";
}
}
这样子就可以循环出来里面的值了。
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
string response = string.Empty;
using (StreamReader reader = new StreamReader(httpWebResponse.GetResponseStream()))
response = reader.ReadToEnd(); var j = JObject.Parse(response);
string shop_name = j["Success"]["items"]["item"][]["shop_name"].ToString();//独一味日化旗舰店、、、一层层的层级关系
{
"Success": {
"total_results": "1",
"items": {
"item": [{
"shop_name": "独一味日化旗舰店",
"serial_num": "",
"order_channel": "直营网店",
"updatetime": "",
"总数量": "3739",
"maxrowver": "",
"tid_item": [{
"storage_id": "1",
"tid": "S17fdgfgfg0349",
"pro_detail_code": "191",
"book_inventory": "-5.000",
"store_location": "",
"pro_type": "原始产品"
}, {
"storage_id": "1",
"tid": "S1712220000349",
"pro_detail_code": "152",
"book_inventory": "-4.000",
"store_location": "",
"pro_type": "原始产品"
}]
}]
}
}
}
上面这个是其他的厂商返回的一个Json格式的数据,现在可以是Json嵌套的还挺多,其中的一个项次还有数组,现在就是把这些数据捞出来存下来。
var j = JObject.Parse(response);
//这个就是主干的值
string shop_name = j["Success"]["items"]["item"][0]["shop_name"].ToString();//独一味日化旗舰店
string tid_item = j["Success"]["items"]["item"][0]["tid_item"].ToString();
//下面是获取数组的名细可以取出来值
JArray jArray = JArray.Parse(tid_item);
for (int i = 0; i < jArray.Count; i++)
{
JObject jdata = (JObject)jArray[i];
string pro_detail_code = jdata["pro_detail_code"].ToString();
}
//将数据动态插入到数组中去
JArray jArray = JArray.Parse(tid_item);
JArray arr = new JArray();
for (int i = ; i < jArray.Count; i++)
{
JObject obj = new JObject();
JObject jdata = (JObject)jArray[i];
obj["linenum"] = jdata["cost_price"].ToString();
obj["sku"] = jdata["sell_price"].ToString();
obj["qty"] = jdata["original_price"].ToString();
obj["inventoryname"] = jdata["sys_price"].ToString();
obj["price"] = jdata["product_name"].ToString();
arr.Add(obj);
}
var rss = new JObject
{
{"Head",new JObject
{
{"TransCode","X1009" },
{"TransId",}
}
},
{ "Body", new JObject
{
{"orderno", "orderno" },
{"billto","billto"},
{"shipto", "shipto"},
{"workid", "workid"},
{"tocity", "tocity"},
{"Address", "Address"},
{"Contact", "Contact"},
{"Tel", "Tel"},
{"detail", arr }
}
}
};
获取Json中特定的值的更多相关文章
- 通过YAJL获取json中的值
这里主要是举例说明一下假设通过yajl获取json中的值. 对于array和object来说,获取的方式略有不同,详细能够參考以下的代码. 我仅仅是从网上搜集信息.知道有这么一种方法.假设还有别的方法 ...
- for in 循环获取json中的键(key)与值(value)
一 .for in 循环 1.获取json中的键(key)与值(value): var data = {name:'张三',age:'20岁',sex:'男'}; for (var a in data ...
- C#获取json字符串指定的值
Newtonsoft.Json在json和对象之间转化是一个非常强大的工具. 对象转化json字符串 Newtonsoft.Json.JsonConvert.SerializeObject() jso ...
- 获取JSON对象的属性值
1.问题背景 有一个json对象,其中有键值对,那怎样获取json对象中属性值 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...
- 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 ...
- jsp页面使用el 按key获取map中的对应值
jsp页面使用el 按key获取map中的对应值 转自:<jsp页面使用el 按key获取map中的对应值>地址:http://blog.csdn.net/baple/article/de ...
- 给定桩号获取纵断面中的高程值(c# for civil3d)
通过civil3d提供的api,也就是纵断面Profile类提供的方法---public double ElevationAt(double station),就可以很轻松的获取纵断面对象某桩号处的高 ...
- 在kindeditor 获取textarea 中 输入的值
要在kindeditor 获取textarea 中 输入的值 必须在kindeditor创建的时候添加下面红色字体的代码 kindeditor创建代码如下: var editor;KindEd ...
- 【Java必修课】通过Value获取Map中的键值Key的四种方法
1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...
随机推荐
- 3.2.1 for循环与while循环的基本语法
不停地重复一件事情,时间久了会非常无聊,然后大脑就会由于疲劳而容易入睡. 重复性的劳动会使人疲劳,而计算机不会,只要代码写得正确,计算机就会孜孜不倦地重复工作.在Python中主要有两种形式的循环结构 ...
- Linux I/O scheduler for solid-state drives
An I/O scheduler and a method for scheduling I/O requests to a solid-state drive (SSD) is disclosed. ...
- 【学QT】2 - QT/E环境的建立
Arm-Linux嵌入式QT/E环境的建立(qt/e 3.x系列) QT/E 3.x系列比QT/E 2.x系列有非常大的改进,大大提高了开发进度,不再使用tmake,安装也更简单.但 ...
- MySQL5.7出现无法启动服务等问题
MySQL5.7版本后有点不同,就是没有DATA文件夹.总是莫名其妙出现一些错误.比如连不上数据库了,出现错误 can't connect mysql on localhost,键入 net star ...
- Android平台Airplay的实现方法
Airplay属于局域网内异构设备之间分享多媒体数据的一种通信协议.Airplay设备有客户端和服务器之分,一般将小屏IOS设备实现为Airplay客户端,大屏幕设备实现为Airplay服务器.即iP ...
- CSUOJ 1329 一行盒子(数组模拟链表)
题目:id=1329">http://acm.csu.edu.cn/OnlineJudge/problem.php? id=1329 题意: watermark/2/text/aHR0 ...
- W5500中断寄存器的理解
W5500中断部分,W5500中文手冊V1.0 写的不够清楚,该文是本人结合中英文手冊及自己理解,整理出有关中断部分的理解,如有不对的请指正. 一:引脚 INTn 为中断输出(Interrupt ou ...
- Flash-制作空心文字
常常看到站点上用很多空心文字作为站点的名称或者特色项目的名称等等,那这些空心文字是怎么做出来的呢? 用Flash事实上非常快就能做出来.过程例如以下: (1)新建空白文件.工具箱中选择"文本 ...
- STL在迭代的过程中,删除指定的元素
直接上Code,上 Picture #include <iostream> #include <list> using namespace std; // STL在迭代的过程中 ...
- 转:java身份证格式强校验
package com.dsh.zealandweb.utils; import java.util.HashSet; import java.util.regex.Pattern; import o ...