Javascript JSON的迭代无法运行jQuery

Javascript JSON的迭代无法运行jQuery,javascript,jquery,json,Javascript,Jquery,Json,我收到了来自ajax的如下回复 "{\"analgesicTax\":false,\"unitPriceRequired\":false,\"toConsumer\":true,\"toRetailer\":true,\"taxName\":\"1\"}" 调用JSON.parse(result)后,结果如下 {"analgesicTax":false, "unitPriceRequired":false, "toConsumer":true, "toRetailer":true, "taxN

我收到了来自ajax的如下回复

"{\"analgesicTax\":false,\"unitPriceRequired\":false,\"toConsumer\":true,\"toRetailer\":true,\"taxName\":\"1\"}"
调用
JSON.parse(result)
后,结果如下

{"analgesicTax":false, "unitPriceRequired":false, "toConsumer":true, "toRetailer":true, "taxName":"1"}
到那时为止,一切似乎都很好。但是,当我试图使用以下代码打印我的键/值对时

 var data =  JSON.parse(result);
                    console.log(data);
                    console.log(data.analgesicTax);
                    for (var prop in data) {
                    console.log(prop+"is" + data[prop]);
我尝试使用with和without
JSON.parse()
,但输出如下所示

0is{
1is"
2isa
3isn
4isa
5isl
6isg
7ise
8iss
9isi
10isc
11isT
12isa
13isx
14is"
15is:
16isf
17isa
18isl
19iss
20ise
21is,
22is"
23isu
24isn
25isi
26ist
27isP
28isr
29isi
30isc
31ise
32isR
33ise
34isq
35isu
36isi
37isr
38ise
39isd
40is"
41is:
42isf
43isa
44isl
45iss
46ise
47is,
48is"
49ist
50iso
51isC
52iso
53isn
54iss
55isu
56ism
57ise
58isr
59is"
60is:
61ist
62isr
63isu
64ise
65is,
66is"
67ist
68iso
69isR
70ise
71ist
72isa
73isi
74isl
75ise
76isr
77is"
78is:
79ist
80isr
81isu
82ise
83is,
84is"
85ist
86isa
87isx
88isN
89isa
90ism
91ise
92is"
93is:
94is"
95is1
96is"
97is}
在我看来,它不是将其视为JSON对象,而是作为字符串数组处理。有什么输入吗?

试试这个

var data =  JSON.parse(result);
Object.keys(data).forEach(function (key) {
console.log(data[key]);
});

如果
结果
已经是JSON,那么您不想使用
JSON.parse()
,因为
JSON.parse()
将JSON的字符串表示形式转换为对象。只要在编码时运行for循环,就应该能够获得所有键及其值

但是,如果您确实以JSON对象的字符串表示形式开始,则需要使用
JSON.parse()

//从JSON对象开始
var结果={
“止痛药”:假的,
“unitPriceRequired”:false,
“toConsumer”:没错,
“toRetailer”:没错,
“taxName”:“1”
}
for(结果中的var prop){
console.log(prop+“是”+结果[prop]);
}
控制台日志(“”);
//以表示为字符串的JSON开始
var result=“{\'anagestictax\':false,\'unitPriceRequired\':false,\'toConsumer\':true,\'toRetailer\':true,\'taxName\':\'1\'”;
var data=JSON.parse(结果);
用于(数据中的var prop){
log(prop+“是”+数据[prop]);

}
输出看起来像
数据
是字符串而不是对象。第一个代码看起来是一个json文本字符串,而不仅仅是json文本,类似于
'{}'
而不是
'{}'
注意,双引号周围有单引号。这意味着在第一次解析之后,您将得到一个常规字符串。您可以尝试对其进行双重解析:
JSON.parse(JSON.parse(result))
,但建议您首先找出获取数据的原因并加以解决,我希望您使用Ajax获取这些数据。请确认Ajax是否具有数据类型param。@PatrickEvans实际上对其进行双重解析是有害的,因为第一次解析将创建JSON对象。字符串看起来奇怪的原因是因为字符串终止符是双引号。因此,字符串中的任何双引号都需要使用反斜杠字符
\“
@estinsunny数据类型为文本。由于ajax可以返回字符串或jsonI,所以我也尝试了这个方法。但是相同的响应类似于字符串object@sree我编辑了我的回复。我以两种方式显示代码。一个以JSON对象开头,另一个以JSON对象的字符串表示形式开头。它实际上与您在代码示例中发布的字符串相同。我尝试了这两种方法,但输出仍然与票证中提到的相同。我已在控制台中打印出json对象并进行了复制。原始响应是否有特殊字符未显示在控制台中?如果是,如何使用console中的特殊字符打印?@sree您是否运行了代码段?它显示了您期望的输出。它没有显示您在问题中描述的特殊字符。是的,选中了它。具有动态结果的相同代码是数字和字符。但是,当我打印结果时,它显示的结果与代码段中的结果完全相同。如果结果已经是json,则不要再次解析它,然后重试