为什么我不能在replace()中传递@符号?

时间:2016-02-17 18:52:55

标签: javascript jquery asp.net-mvc asp.net-mvc-4

我在我的视图@section中编写了以下javascript代码。

var mapping = {
    '@Title': 'text',
    '@ID': 'id',
    '@ParentID': 'parent',
    '@Narrative': 'value'
}
var temp = JSON.stringify(data);
for (key in mapping) {
    temp = temp.replace(new RegExp(key, 'g'), mapping[key]);

}
data = JSON.parse(temp.replace(/@/g, ''));

假设data是上面已经声明的数组。在视图中,我无法使用语句data = JSON.parse(temp.replace(/@/g, ''));。它会引发以下错误:

  

分析器错误

     

描述:解析资源期间发生错误   需要为此请求提供服务。请查看以下具体内容   解析错误详细信息并适当修改源文件。

     

分析器错误消息:" /"在代码块的开头无效。   只有标识符,关键字,评论"("和" {"有效。

我传递@的原因是从@删除所有temp个符号,但是使用MVC代码时,它会引发@个符号的错误。

以下是zeelong最初在post发布的一些数组数据。

var data = {
    "class": {
        "@Title": "SOCIAL HISTORY",
        "@ID": "1",
        "@ParentID": "0",
        "helpNavNode": [{
            "@Title": "ALCOHOL CONSUMPTION",
            "@ID": "2",
            "@ParentID": "1",
            "helpNavNode": [{
                "@Title": " Never",
                "@ID": "3",
                "@ParentID": "2",
                "@Narrative": "ALCOHOL CONSUMPTION: Never"
            }, {
                "@Title": " Occasionally",
                "@ID": "4",
                "@ParentID": "2",
                "@Narrative": "ALCOHOL CONSUMPTION: Occasionally"
            }, {
                "@Title": " Socially",
                "@ID": "5",
                "@ParentID": "2",
                "@Narrative": "ALCOHOL CONSUMPTION: Socially"
            }, {
                "@Title": " Daily (3 beers/day) (6 pack/day)",
                "@ID": "6",
                "@ParentID": "2",
                "@Narrative": "ALCOHOL CONSUMPTION: Daily (3 beers/day) (6 pack/day)"
            }, {
                "@Title": " Is Alcoholic",
                "@ID": "7",
                "@ParentID": "2",
                "@Narrative": "ALCOHOL CONSUMPTION: Is Alcoholic"
            }, {
                "@Title": " History of Alcoholism",
                "@ID": "8",
                "@ParentID": "2",
                "@Narrative": "ALCOHOL CONSUMPTION: History of Alcoholism"
            }, {
                "@Title": " None",
                "@ID": "26",
                "@ParentID": "2",
                "@Narrative": "ALCOHOL CONSUMPTION: None"
            }, {
                "@Title": "Alcoholism Screen Question",
                "@ID": "39",
                "@ParentID": "2",
                "helpNavNode": {
                    "@Title": " Ever had a drinking problem? Last drink? ",
                    "@ID": "40",
                    "@ParentID": "39",
                    "@Narrative": "ALCOHOL CONSUMPTION:Alcoholism Screen Question: Ever had a drinking problem? Last drink? "
                }
            }]
        }, {
            "@Title": "MARITAL STATUS",
            "@ID": "9",
            "@ParentID": "1",
            "helpNavNode": [{
                "@Title": " Married",
                "@ID": "10",
                "@ParentID": "9",
                "helpNavNode": {
                    "@Title": " x 10 years",
                    "@ID": "15",
                    "@ParentID": "10",
                    "@Narrative": "MARITAL STATUS: Married: x 10 years"
                }
            }, {
                "@Title": " Divorced",
                "@ID": "11",
                "@ParentID": "9",
                "@Narrative": "MARITAL STATUS: Divorced"
            }, {
                "@Title": " Single",
                "@ID": "12",
                "@ParentID": "9",
                "@Narrative": "MARITAL STATUS: Single"
            }]
        }, {
            "@Title": "Recreational drug use",
            "@ID": "13",
            "@ParentID": "1",
            "@Narrative": ":Recreational drug use"
        }, {
            "@Title": "OCCUPATION",
            "@ID": "14",
            "@ParentID": "1",
            "helpNavNode": {
                "@Title": " works for  x 27 years",
                "@ID": "25",
                "@ParentID": "14",
                "@Narrative": "OCCUPATION: works for  x 27 years"
            }
        }, {
            "@Title": " 1 child",
            "@ID": "16",
            "@ParentID": "1",
            "@Narrative": ": 1 child"
        }, {
            "@Title": " 2/3/4/5/6 children",
            "@ID": "17",
            "@ParentID": "1",
            "@Narrative": ": 2/3/4/5/6 children"
        }, {
            "@Title": "Activities",
            "@ID": "18",
            "@ParentID": "1",
            "helpNavNode": [{
                "@Title": " walks regularly",
                "@ID": "19",
                "@ParentID": "18",
                "@Narrative": "Activities: walks regularly"
            }, {
                "@Title": " cycles for exercise",
                "@ID": "20",
                "@ParentID": "18",
                "@Narrative": "Activities: cycles for exercise"
            }, {
                "@Title": " runs 3 days/week",
                "@ID": "21",
                "@ParentID": "18",
                "@Narrative": "Activities: runs 3 days/week"
            }, {
                "@Title": " hunting and fishing",
                "@ID": "22",
                "@ParentID": "18",
                "@Narrative": "Activities: hunting and fishing"
            }, {
                "@Title": " hiking and camping",
                "@ID": "23",
                "@ParentID": "18",
                "@Narrative": "Activities: hiking and camping"
            }, {
                "@Title": " swims regularly",
                "@ID": "24",
                "@ParentID": "18",
                "@Narrative": "Activities: swims regularly"
            }]
        }, {
            "@Title": "Tobacco Use",
            "@ID": "27",
            "@ParentID": "1",
            "helpNavNode": [{
                "@Title": "Cigar, Cigarette, Pipe, Smokeless",
                "@ID": "30",
                "@ParentID": "27",
                "helpNavNode": {
                    "@Title": "10/pk year",
                    "@ID": "32",
                    "@ParentID": "30",
                    "@Narrative": "Tobacco Use:Cigar, Cigarette, Pipe, Smokeless:10/pk year"
                }
            }, {
                "@Title": "Quit Date",
                "@ID": "35",
                "@ParentID": "27",
                "@Narrative": "Tobacco Use:Quit Date"
            }, {
                "@Title": "Year Started",
                "@ID": "36",
                "@ParentID": "27",
                "@Narrative": "Tobacco Use:Year Started"
            }]
        }, {
            "@Title": "SocHx  Template",
            "@ID": "37",
            "@ParentID": "1",
            "helpNavNode": [{
                "@Title": " Living situation:  Occupation:  Tobacco:  EtOH:  Rec. drugs: ",
                "@ID": "41",
                "@ParentID": "37",
                "@Narrative": "SocHx  Template: Living situation:  Occupation:  Tobacco:  EtOH:  Rec. drugs: "
            }, {
                "@Title": " Living situation:  Occupation:  Tobacco:  EtOH:  Rec. drugs: ",
                "@ID": "42",
                "@ParentID": "37",
                "@Narrative": "SocHx  Template: Living situation:  Occupation:  Tobacco:  EtOH:  Rec. drugs: "
            }]
        }]
    }
}

2 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为Razor认为你正在尝试编写C#代码。只需添加双@来告诉Razor不要这么认为。

data = JSON.parse(temp.replace(/@@/g, ''));

同样对mapping变量内容执行相同操作:

var mapping = {
    '@@Title': 'text',
    '@@ID': 'id',
    '@@ParentID': 'parent',
    '@@Narrative': 'value'
}

答案 1 :(得分:0)

假设您要删除所有public SequenceInformationExtractor getSequenceInformationExtractor() { if ( getQuerySequencesString() == null ) { return SequenceInformationExtractorNoOpImpl.INSTANCE; } else { return SequenceInformationExtractorLegacyImpl.INSTANCE; } } ,则无需循环遍历每个属性并单独删除@,一旦您对数据进行字符串化,您就可以一次性删除它们。

@