1

私はjsonについて少し学ぼうとしています。npm を使用して jsonlint をインストールしました。このウェブサイトからスキーマとファイルを正確にコピーしました。それらは次のとおりです。

テスト.json:

[
    {
        "id": 2,
        "name": "An ice sculpture",
        "price": 12.50,
        "tags": ["cold", "ice"],
        "dimensions": {
            "length": 7.0,
            "width": 12.0,
            "height": 9.5
        },
        "warehouseLocation": {
            "latitude": -78.75,
            "longitude": 20.4
        }
    },
    {
        "id": 3,
        "name": "A blue mouse",
        "price": 25.50,
        "dimensions": {
            "length": 3.1,
            "width": 1.0,
            "height": 1.0
        },
        "warehouseLocation": {
            "latitude": 54.4,
            "longitude": -32.7
        }
    }
]

スキーマ.json:

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Product set",
    "type": "array",
    "items": {
        "title": "Product",
        "type": "object",
        "properties": {
            "id": {
                "description": "The unique identifier for a product",
                "type": "number"
            },
            "name": {
                "type": "string"
            },
            "price": {
                "type": "number",
                "minimum": 0,
                "exclusiveMinimum": true
            },
            "tags": {
                "type": "array",
                "items": {
                    "type": "string"
                },
                "minItems": 1,
                "uniqueItems": true
            },
            "dimensions": {
                "type": "object",
                "properties": {
                    "length": {"type": "number"},
                    "width": {"type": "number"},
                    "height": {"type": "number"}
                },
                "required": ["length", "width", "height"]
            },
            "warehouseLocation": {
                "description": "Coordinates of the warehouse with the product",
                "$ref": "http://json-schema.org/geo"
            }
        },
        "required": ["id", "name", "price"]
    }
}

これらのファイルは両方とも同じディレクトリに保存されています。以下のコマンドを入力しました。

jsonlint test.json --validate schema.json

そして、次の出力を受け取りました。

検証エラー:

Instance is not a required type
uri: urn:uuid:67449791-6ef0-4a5f-8ee1-d9ae1c806249#/items
schemaUri: http://json-schema.org/draft-03/hyper-schema#/properties/items
attribute: type
details: ["http://json-schema.org/draft-03/hyper-schema#","array"]

このウェブサイトのバリデーターにまったく同じコードを入力すると 、有効であるとチェックアウトされました。

ID(必須)を削除してjsonファイルを意図的に壊したところ、まったく同じ出力が得られました。

なぜこれが起こるのでしょうか?どうすれば修正できますか?

4

2 に答える 2

2

jsonlint は現在、draft-04 スキーマに対して検証できません。draft-03 を使用してスキーマを作成する必要があります

ドラフト 04 に対して検証するツールについては、こちらを参照してください: http://json-schema.org/implementations.html

于 2016-04-12T17:44:48.340 に答える
1

ドラフト04のそのバージョンへの参照がない依存関係の1つ(JSV)に問題があるようです

于 2016-01-21T13:17:31.590 に答える