在openjson 里面,其实是可以把数据类型array里面的值遍历出来的,举个栗子

declare @v nvarchar(500) = N'
{"name":"test",
"obj":{"arr":[1,"ofao",3,4,5]}
}
'
select * from openjson(@v)
/*
key value type
name test 1
obj {"arr":[1,"ofao",3,4,5]} 5 
*/ select *
from openjson (@v,'$.obj.arr')
/*
key value type
0 1 2
1 ofao 1
2 3 2
3 4 2
4 5 2
*/

这样,就可以把array里面的每一个元素从列转行出来。是不是看起来很方便~虽然目前没有用到,但是留存个认知还是好的。

说到这里,我就还想说一下 json里面的path 的用法。json path 的基础写法,其实和xml 的路径写法类似

declare @v nvarchar(600) = N'[{"ID":1,"name":"张三","Chinese":90,"Math":80},{"ID":2,"name":"李四","Chinese":75,"Math":90},{"ID":3,"name":"王五","Chinese":68,"Math":100},{"ID":4,"name":"赵六","Chinese":100}]'

select * from openjson(@v)
with (
ID int '$.ID',
name nvarchar(50) '$.name',
Math int '$.Math',
Chinese int '$.Chinese'
)

参考之前的例子

就是在路径之前加上一个 $. 的前缀,然后每一级就用一个. 来探查下一级。(PS:json 这里计数从0开始,不是1开始)

declare @v nvarchar(500) = N'
{"name":"test",
"obj":{"arr":[1,"ofao",3,4,5],
}
}' select json_value(@v,'$.obj.arr[0]') --
1

目前呢,我还没发现它支持类似 xml里面的那种 //node 的写法,如果各位朋友找到的话,烦请告诉小弟一声~

好~这次就到这里~

继续说一下openjson 以及 json path 的使用 (2)的更多相关文章

  1. 【JEMTER】后置处理器JSON Path Extractor获取server端返回的json中某项值

    需求1:点击所有报表模板时,server端返回所有报表模板的ID(templateId),测试时需要下载某个模板生成的报表 需求2:点击单个报表模板时,server端返回这个报表模板下的所有报表ID( ...

  2. jmeter里json path postprocessor的用法

    后置处理器添加 json path postprocessor. 用处: 当前接口响应返回的json中提取内容,作为变量可以在不同的请求中传递. 如下,从登陆接口返回的json中提取user id,变 ...

  3. JMeter 插件 Json Path 解析HTTP响应JSON数据

    一.基本简介 JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试.我们的 API 返回结果为JSON数据格式.JSON 简介,JSON 教程. JSON 已经成为数 ...

  4. SQL FOR JSON PATH 返回 json

    --直接返回 age FOR JSON PATH --返回值 [{"name":"张学友","age":60}] select c1, c2 ...

  5. Jmeter 中JSON Path Extractor高级用法

    好久没玩jemter了,由于项目原因又重新拾起.在使用JSON Path Extractor(jmeter 4.0已经默认支持了,4.0以下要自行安装插件)时,可以进行条件过滤,不用再自行写shell ...

  6. JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)

    JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试.我们的 API 返回结果为 JSON 数据格式.JSON 简介,JSON 教程. JSON 已经成为数据交换格式 ...

  7. JMeter----正则表达式&JSON Path Extractor

    最近在用JMerter给公司一个项目做性能测试,期间遇到要提取上一个接口返回的数据作为下个接口的请求.这里做下记录 如图所示,需要将“扫描二维码”接口请求的返回值中的data部分,作为“处理提交码值” ...

  8. 使用json path设置关联

    与正则表达式相比,这种方法会更简单一些: json path是在返回的是K-V的格式中根据key进行的关联,如果压的接口返回的是json的话,使用json path比较方便,如果不是json的话,就使 ...

  9. JSON Path表达式

      JSON Path 描述 $ 表示根元素 @ 表示当前节点 .  表示子节点 .. 选择所有符合条件的节点 * 所有节点 [] 迭代器标识,如数组下标 [,] 支持迭代器中多选 [start:en ...

随机推荐

  1. 实现在Android 进程和线程

    进程和线程 如果某个应用程序组件是第一次被启动,且这时应用程序也没有其他组件在运行,则Android系统会为应用程序创建一个包含单个线程的linux进程.默认情况下,同一个应用程序的所有组件都运行在同 ...

  2. Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

    Java并发编程:CountDownLatch.CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch ...

  3. 通过参数传递,判断数字、字符串、list、tuple、词典等数据类型是否为可变数据对象

    list: >>> a = [1,2,3,4]>>> a[0]1>>> a[1]2>>> a[0] = 10>>&g ...

  4. Java集合源码分析(三)LinkedList

    LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈.队列和双端队列来使用. LinkedList同样是非线程安全 ...

  5. android自动化之monkeyrunner

    一.使用CMD命令打开模拟器 运行monkeyrunner之前必须先运行相应的模拟器或连上设备,不然monkeyrunner无法连接设备. 1.1  用Elipse打开Android模拟器或在CMD中 ...

  6. 第二章 部署war包到tomcat

    以turbine为例. 一.部署 1.下载或者生成war包(从maven上下载war包,并改名字为turbine.war) 2.将turbine.war拷贝到$TOMCAT_HOME/webapps中 ...

  7. jQuery立体式数字滚动条增加

    1.html结构 <div class="numberRun1"></div> 2.js <script type="text/javasc ...

  8. 在线代码编辑器CodeMirror简介

    1.什么是Code Mirror 最近做一个项目需要在网页上实现一个代码编辑器,支持语法高亮.自动缩进.智能提示等功能.发现Code Mirror刚好满足所有需求.Code Mirror是由js写的一 ...

  9. ae 打开地图文档

    if (openMxdDialog.ShowDialog() == DialogResult.OK) { pathMXD = openMxdDialog.FileName; if (pathMXD ! ...

  10. 首届Autodesk编程马拉松(Hackathon)开始报名啦 -- 6.14~15 上海

    欢迎报名参加Autodesk 首届编程马拉松 ( Hackathon ) 活动   首届Autodesk编程马拉松(Hackathon)活动即将在Autodesk公司中国研究院(上海)举办.本次编程马 ...