v16R4:JSON Validateのエラー

Product :4D - 4D Server
4D : v16R4(213909)
OS : Mac OS X

<code 4D>
C_OBJECT($json_o;$Schema_o;$Result_o)
$json_o:=New object(“name”;“hogehoge”;“age”;22)
$Schema_o:=New object(“description”;“test schema”;“type”;“object”;“properties”;New object(“name”;“string”;“age”;“number”))
$Result_o:=JSON Validate($json_o;$Schema_o)
</code 4D>

実行すると、「スキーマはオブジェクトでなければなりません。検証はスキップされます。」とエラーが出ます。
どこが間違っているのでしょうか? :frowning:

ps.スクリーンショットを貼ろうと思ったのですが、まだ画像のアップロードが治っていないみたいです。

スキーマのフォーマットが正しくないようです。

参考:

{
“description”:“test schema”,
“type”:“object”,
“properties”:
{
“name”:{“type”:“string”},
“age”:{“type”:“number”}
}
}

うまく行きました。ご回答ありがとうございます。 :pray:

エラーメッセージから、この問題を推測する事ができませんでした。
ここは、4D側のエラーではなく、リザルトにそのエラー内容が表示されるべきではないかと思います。

「オブジェクト」が指しているものがどれなのかわかりません。 :frowning:

formatプロパティに、"date"と定義したところ、
"Error code:905 (xbox)"と言うエラーが返ってきました。 :frowning:
エラー内容が不明です。

formatの"date"ですが、最新のドラフトでは除外されているみたいですね。

とりあえず、formatにプロパティに、"date-time"と定義しました。
返ってきたエラーですが、
{success:false,errors:[{jsonPath:birthday,code:24,message:,schemaPaths:properties.birthday}]}
場所まではわかったのですが、code:24がなにかわかりません。 :frowning:

multipleOf 2 Error while validating against ‘multipleOf’ key.
maximum 3 The value provided should not be greater than specified in the schema ("{s1}").
exclusiveMaximum 4 The value provided should be lesser than specified in the schema ("{s1}").
minimum 5 The value provided should not be lesser than specified in the schema ("{s1}").
exclusiveMinimum 6 The value provided should be greater than specified in the schema ("{s1}").
maxLength 7 The string is longer than specified in the schema.
minLength 8 The string is shorter than specified in the schema.
pattern 9 The string “{s1}” does not match the pattern in the schema:{s2}.
additionalItems 10 Error while validating an array. JSON contains more elements than specified in the schema.
maxItems 11 The array contains more items than specified in the schema.
minItems 12 The array contains lesser items than specified in the schema.
uniqueItems 13 Error while validating an array. Elements are not unique. Another instance of “{s1}” is already in the array.
maxProperties 14 The number of properties is greater than specified in the schema.
minProperties 15 The number of properties is lesser than specified in the schema.
required 16 The required property “{s1}” is missing.
additionalProperties 17 No additional properties allowed by the schema. The property(ies) {s1} should be removed.
dependencies 18 The property “{s1}” required to have the property “{s2}”.
enum 19 Error while validating against ‘enum’ key. “{s1}” does not match any enum element in the schema.
type 20 Incorrect type. Expected type is: {s1}
oneOf 21 Error while validating against ‘oneOf’ key. Json matches more than one value.
oneOf 22 Error while validating against ‘oneOf’ key. Json does not match any value.
not 23 Error while validating against ‘not’ key. The json is valid against the value of ‘not’.
format 24 Error while validating against ‘format’ key. The string does not match ("{s1}") format.

確かにエラーコードはドキュメントに掲載されていないようですが,メッセージの内容に対応しています。

http://livedoc.4d.com/--16-R4/JSON/JSON-Validate.301-3429973.ja.html

フォーラム復旧した様ですね。 :slight_smile:

将来的には、このエラーメッセージがでると考えてよいのでしょうか? :pray:

はい。

先日,公式ブログに記事と例題がアップされましたが,

http://blog.4d.com/a-new-tool-json-validator/

こんな感じでエラーメッセージが返されます。

[]20438977;“Your comment here…”[/]

: Keiji HOSAKA

formatの"date"ですが、最新のドラフトでは除外されているみたいですね。

最新のドラフト draft-07では、また"date"と"time"が復活したみたいです。 :mrgreen:

ところで4Dが利用しているライブラリは、どのライブラリでどのバージョン対応でしょうか。
JSON Validateのドキュメントからhttp://json-schema.org/json-schema.org>辿ると最新のドラフト説明になりますので、
場合によっては仕様が不一致になる場合があるかと思います。

4Dドキュメントでは

このドキュメントは下書き(draft)であり、将来変化する可能性があります

http://doc.4d.com/4Dv16R5/4D/16-R5/JSON-Validate.301-3481805.ja.html

と但し書きがされていますが,確かに,どの版を参考にしたのか,という点が欠けていました。

SVGやUnicodeについても言えることですが,おおまかな仕様名だけでなく,
細かい点についても,実装しているのか,していないのか,という情報が必要になることがありますね。

開発部とドキュメントの担当者に問い合わせ中です。

: Keiji HOSAKA

ところで4Dが利用しているライブラリは、どのライブラリでどのバージョン対応でしょうか。

ドキュメントの担当者より回答がありました。

4DのJSONスキーマはバージョン04に基づいており,ドキュメントにもそのように記載したいとのことです。

仕様を4Dドキュメントに詳述することについては,保守が困難であり,制約も多い(Doc Centerはそのように設計されていない)ため,申し訳ないのですが,特に予定されていません。

なお,http://doc.4d.com/4Dv16R5/4D/16-R5/JSON-Parse.301-3481803.ja.htmlJSON Parse>の * オプションを使用した場合,__symbolsという特殊なプロパティが追加されますが,このプロパティはValidationで無視されるようになっているので,そのままhttp://doc.4d.com/4Dv16R4/4D/16-R4/JSON-Validate.301-3429973.ja.htmlJSON Validate>に渡すことができます。

新たに外部ライブラリが採用されたのではなく,もともと4D内部に存在していた関数が,ブラッシュアップ後,公開されてJSON Validateになりました。

: Keisuke MIYAKO

新たに外部ライブラリが採用されたのではなく,もともと4D内部に存在していた関数が,ブラッシュアップ後,公開されてJSON
Validateになりました。
新しく採用したかどうかは別に関係ありません。ライブラリ側が対応しないと4Dとしても最新のDraftに対応できないと思いますのでお伺いしました。
要は内包しているライブラリがアップグレードされた場合に、どの様なタイミングで4D側もアップグレードされるのか教えてください。
利用しているライブラリ名を公表するのは難しいですか?

v16(Rではなく)の「4Dについて…」から「著作権」をクリックすると,

Cairo
Curl
ICU
Hunspell
libpng
libxml2
libxslt
libzip
Mecab
openCFLite
openssl
PHP
pixman
sqlite
webkit
XALAN
XERCES
zlib
MD5
SHA-1
iODBC

・・・と主要なライブラリの名称が表示されます。

しかし,JSONやSVGについては,言及がありませんので,
何らかのサードパーティ製ライブラリを使用しているわけではないことがわかります。
ライブラリのアップデートに伴って自動的にスキーマが変わることもない,ということです。

このリストは、基本的にオープンソースのライブラリですよね。
たしかSVGについて過去に問い合わせた時には、ライブラリを買っているて言ってたと思いますが…:roll:
内製なら内製で良いのですが、それならDraft7への対応もライブラリの更新を待たなくて良い分簡単ですよね? :mrgreen:

: Keiji HOSAKA

SVGについて過去に問い合わせた時には、ライブラリを買っているて言ってたと思いますが

もし,そのような印象を与えたのであれば,説明の仕方が良くありませんでした。

SVGレンダリングエンジンは完全にオリジナルです。

オブジェクト型は,コレクションメソッド・ポインターの参照・オブジェクト記法,
そして何よりもデバッガやコンパイラーとも深い関わりがありますから,
容易に交換できる外部ライブラリを取り付けるわけにはいかないのかもしれません。