将JSON中的值设置为默认JSON项

时间:2011-11-09 11:20:08

标签: javascript json

我在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”的情况下评估同一数据集中的数据。 谢谢大家!

2 个答案:

答案 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,因为它还没有完成创建(但我可能是错的)。