使用tSQL遍历JSON对象 - OPENJSON

时间:2017-02-15 15:53:35

标签: sql sql-server json tsql

我有以下JSON代码。我使用OPENJSON将值拉入SQL数据库,但是我在使用Refund对象的路径时遇到问题。

我试图在“交易”对象中提取“金额”值(因此预期值应为298.47)。

SQL代码(当前仅返回空值)

OPEN(json)
WITH( 
     OtherJSONstuff   varchar   '$otherjsonstuff'
     Refund           int       '$.refund[0].transactions.amount'  <what should this be

JSON代码

"otherjsonstuff": othervalues
"otherjsonstuff": othervalues
"object": [
    {
      "id": 212,
    "items": [
        {
          "id": 151,
          "quantity": 3,
          "item_id": 926,
          "subtotal": 30.0,
          "tax": 0.0,
          "item": {
            "id": 926,
            "quantity": 3,
            "price": "10.00",
            "product_id": 934,
            "properties": [],
            "discount": "0.00",
            "tax": []
          }
        }
      ],
      "action": [
        {
          "id": 537,
          "amount": "298.47", --this is the line I need
          "kind": "refund",
          "created": "2016-12-13",
          "location_id": null,
          "parent_id": 537,
        }
      ],
    }
  ],

1 个答案:

答案 0 :(得分:0)

重新格式化JSON代码

它应该是$ .refund [0] .transactions [0] .amount

依赖于您要访问的数组对象,只需递增和递减值。根本原因是了解JSON层次结构,JNevil为您提供了一些很好的资源