【发布时间】:2016-02-18 15:56:26
【问题描述】:
我在我的视图的@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, ''));。它抛出以下错误:
解析器错误
描述:解析资源时出错 需要为该请求提供服务。请查看以下具体内容 解析错误详细信息并适当地修改您的源文件。
解析器错误消息:“/”在代码块的开头无效。 只有标识符、关键字、cmets、"(" 和 "{" 是有效的。
我传递@ 的原因是从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: "
}]
}]
}
}
【问题讨论】:
-
可以贴出实际数据吗?
-
@Stryner 当我尝试它时不会检测到 JSON 数组键,因为键前面有一个 @ 符号
-
实际错误是什么?问题似乎是替换没有返回有效的 JSON。在问题行之前尝试
alert(temp.replace(/@/g, '')),看看你得到了什么。 -
@Will 我会从 zeelong 的帖子中提取数据,T J 在此链接中回答 stackoverflow.com/questions/35447997/…
-
@Joe 这是因为我在视图页面的“@section script{}”中使用了 js 脚本
标签: javascript jquery asp.net-mvc asp.net-mvc-4