我在Dojo应用程序上,是否有任何特殊的JS解析器可以在JSON数据中启用默认值?
示例,我想将item [1]中的“maxHeadingLength”设置为item [0]中的值。
{
items:[
{
"class": "pmedia.types.PMPlatformRenderConfiguration",
"listItemHeight": "70",
"listItemIconHeight": "60",
"maxDesktopItemsWithBannerP": "9",
"maxDesktopItemsWithBannerL": "9",
"platform": "Default",
"maxHeadingLength":
{
P:300,
L:400
}
},
{
"class": "pmedia.types.PMPlatformRenderConfiguration",
"listItemHeight": "70",
"listItemIconHeight": "60",
"platform": "IPAD",
"maxHeadingLength": "Default"
},
这样的事情也会很好:
“maxHeadingLength”:“this.items [0] .maxHeadingLength”
由于
更新,似乎我现在可以并且需要更好地解决问题。
我想将任何字符串表达式写入纯JSON字符串数据(文件)中,当然是字符串并在不使用“eval”的情况下评估同一数据集中的数据。 谢谢大家!
答案 0 :(得分:0)
您可以在后端进程中执行此操作,也可以在处理JSON时使用前端进程。
让我们假设您希望使用JS在前端执行此操作,我建议首先将items[0].maxHeadingLength
设置为var,如下所示:
var defaultMaxHeadingLength = items[0].maxHeadingLength;
然后当您循环访问JSON时,您可以检查maxHeadingLength
属性是否具有值并默认值,如下所示:
var item, i;
for ( i = 0; i < items.length; i++ )
{
item = items[ i ];
item.maxHeadingLength = item.maxHeadingLength ? item.maxHeadingLength : defaultMaxHeadingLength;
}
答案 1 :(得分:0)
这里有一种方法可以做到这一点(如果我理解你要做的事情):
var defaultItem = {
"maxHeadingLength": {
P: 300,
L: 400
}
};
var jsondata = {
items: [
{
"class": "pmedia.types.PMPlatformRenderConfiguration",
"listItemHeight": "70",
"listItemIconHeight": "60",
"platform": "IPAD",
"maxHeadingLength": this.defaultItem.maxHeadingLength
}
]
};
alert(jsondata.items[0].maxHeadingLength.L);
//returns 400
基本上,您有一个与所有其他项目分开的默认项目,允许您参考主数据中的默认项目。
我认为你不能在同一个对象中使用this.jsondata,因为它还没有完成创建(但我可能是错的)。