0

JSONPath で何かをするのに少し問題があります。これは私が持っているものです:

[
    {
        "id": {
            "type": "literal",
            "value": "123456789",
            "datatype": "http://www.w3.org/2001/XMLSchema#string"
        },
        "name": {
            "type": "literal",
            "value": "John Doe",
            "datatype": "http://www.w3.org/2001/XMLSchema#string"
        }
    },
    {
        "id": {
            "type": "literal",
            "value": "2123456789",
            "datatype": "http://www.w3.org/2001/XMLSchema#string"
        },
        "name": {
             "type": "literal",
             "value": "Jane Doe",
             "datatype": "http://www.w3.org/2001/XMLSchema#string"
    }
}

] } ]

そして、パターンを適用した後に取得したいのは次のとおりです。

[
    {
        "id": "123456789",
        "name": "John Doe"

     },
     {
        "id": "2123456789",
        "name": "Jane Doe"

     }
]

これは可能ですか?私がやっている最善のことは["123456789", "John Doe","2123456789","Jane Doe"]

パターンはどのように見えるべきですか?

4

1 に答える 1

-1

DefiantJS ( http://defianjs.com ) を使用すると、XPath 式を使用して JSON 構造を照会できます。DefiantJS はグローバル オブジェクト JSON をメソッド「search」で拡張し、一致を配列のようなオブジェクトとして返します。

以下にコード例を示します。

var data = [
       {
          "id": {
             "type": "literal",
             "value": "123456789",
             "datatype": "http://www.w3.org/2001/XMLSchema#string"
          },
          "name": {
             "type": "literal",
             "value": "John Doe",
             "datatype": "http://www.w3.org/2001/XMLSchema#string"
          }
       },
       {
          "id": {
             "type": "literal",
             "value": "2123456789",
             "datatype": "http://www.w3.org/2001/XMLSchema#string"
          },
          "name": {
             "type": "literal",
             "value": "Jane Doe",
             "datatype": "http://www.w3.org/2001/XMLSchema#string"
          }
       }
    ],
    found = JSON.search(data, '//value'),
    str = '';

for (var i=0; i<found.length; i++) {
    str += found[i] +'<br/>';
}

document.getElementById('output').innerHTML = str;

このコードの動作を確認するには、このフィドルをチェックしてください。http://jsfiddle.net/hbi99/4BZMm/

より便利な XPath 式については、こちらのような XPath エバリュエーターを参照してください。http://defiantjs.com/#xpath_evaluator

于 2014-05-18T23:12:33.710 に答える