从previous unresolved issue开始,我正在使用json-schema-faker
和json-server
,目前正在尝试重用json模式中的某些数据。
我在Github的this页中找到了属性:jsonPath
,其中准确地解释了我正在尝试做的事情和问题所在。
我正在尝试从生成这些数据的JavaScript应用程序以及我使用的库json-schema-faker site中测试该属性。通过上述任何一种方式使用此属性,将返回一个随机字符串,而不是我指的ID("jsonPath": "$..properties.test.items.properties.id"
使用this网站进行验证,不会引起任何问题,并且使用jsonPath
可以正确获取我尝试重用的值。
我应该在JavaScript代码/模拟数据生成器中导入什么内容吗,或者json-schema版本可能不支持我尝试执行的操作?
我尝试使用的一些路径是:
$..id
$..test.items.properties.id
$..test.id
这是我的json模式:
{
"title": "teest",
"type": "object",
"required": [
"test"
],
"properties": {
"test": {
"type": "array",
"minItems": 1,
"maxItems": 3,
"uniqueItems": true,
"items": {
"type": "object",
"required": [
"id",
"samples"
],
"properties": {
"id": {
"type": "string",
"enum": [
"1,",
"2",
"3"
]
},
"samples": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "object",
"properties": {
"test2": {
"type": "string",
"jsonPath": "$..properties.test.items.properties.id"
}
}
}
}
}
}
}
}
}
对此我将不胜感激,因为我无法在线找到任何东西,而且我真的不想使用硬编码值来模拟这些数据。
答案 0 :(得分:0)
也许您已经找到了解决问题的方法,但万一其他人想知道解决方法:
在type
之前删除jsonPath
,而不要删除
...
"items": {
"type": "object",
"properties": {
"test2": {
"type": "string", // Remove this line
"jsonPath": "$..properties.test.items.properties.id"
}
}
}
...
将架构更改为
...
"items": {
"type": "object",
"properties": {
"test2": {
"jsonPath": "$..properties.test.items.properties.id"
}
}
}
...
json模式伪造者库不知道您要引用的对象的类型。因此,如果您提供一种类型,则json schmea伪造者将始终使用指定的随机生成的类型来覆盖您的相对值。 我也为此感到苦恼,因为不幸的是,没有提供该库的文档(大部分情况下),而且不够详尽。