附加字符串时for循环中的Javascript[Object]错误
我是一个新手,尝试将onSuccess函数的结果反序列化为:附加字符串时for循环中的Javascript[Object]错误,javascript,object,Javascript,Object,我是一个新手,尝试将onSuccess函数的结果反序列化为: "onResultHttpService": function (result, properties) { var json_str = Sys.Serialization.JavaScriptSerializer.deserialize(result); var data = []; var categoryField = properties.PodAttributes.categoryField; var v
"onResultHttpService": function (result, properties) {
var json_str = Sys.Serialization.JavaScriptSerializer.deserialize(result);
var data = [];
var categoryField = properties.PodAttributes.categoryField;
var valueField = properties.PodAttributes.valueField;
for (var i in json_str) {
var serie = new Array(json_str[i] + '.' + categoryField, json_str[i] + '.' + valueField);
data.push(serie);
}
result
中的JSON如下所示:
[
{
"Text": "INDIRECT GOODS AND SERVICES",
"Spend": 577946097.51
},
{
"Text": "LOGISTICS",
"Spend": 242563225.05
}
]
正如您所看到的,我正在for循环中追加字符串..我这样做的原因是因为属性名称不断更改,因此我不能将其作为
var serie = new Array(json_str[i].propName, json_str[i].propValue);
我需要传递数据(数组类型)以绑定highchart柱形图。但当我检查var系列时,它显示为
serie[0] = [object Object].Text
serie[1] = [object Object].Spend
为什么不在数组中填充实际内容?之所以这样做,是因为
json\u str[i]
是一个对象,当您将一个对象强制为字符串时就会发生这种情况(除非该对象以一种有用的方式实现toString
,而这显然不是)。您尚未显示正在反序列化的JSON
现在您已经发布了JSON,我们可以看到它是一个包含两个对象的数组,每个对象都有一个Text
和Spend
属性。因此,在循环中,json_str[i].Text
将引用Text
属性。如果要使用categoryField
中的名称检索该属性,可以通过json\u str[i][categoryField]
进行检索
我不知道您希望在系列中得到什么,但是如果您希望它是一个双槽数组,其中第一个包含类别字段的值,第二个包含支出字段的值,那么
var serie = [json_str[i][categoryField], json_str[i][valueField]];
(几乎没有理由使用新数组
,只需使用数组文字-[…]
。由于您的问题实际上取决于您循环的数据,最好向我们展示该数据(例如,结果
看起来像什么?。@T.J.Crowder,这里是result=[{“Text”:“间接商品和服务”,“支出”:577946097.51},{“文本”:“物流”,“支出”:242563225.05}]//在去个性化后,它变成..var json_str=Sys.Serialization.JavaScriptSerializer.deserialize(result);即json_str=json_str[0]…json_str[1]要改进您的问题,请使用“编辑”“链接在下面。我继续为你编辑了它。克劳德..收到了,伙计..谢谢你。”much@AdnanBaliwala:很高兴这有帮助。如果这回答了您的问题,请将其标记为已接受的答案: