首页 新闻 会员 周边

JSON字符串转换成对象后赋值问题

0
[已解决问题] 解决于 2015-09-08 18:56

从服务端返回的数据是JSON格式的字符串,在JS端已经转成JSON对象,但是把这个JSON整个赋值给新变量时,页面没有获取到里面的值(值等价于字符串的JSON对象,如["name":"abc"],而不是"["name":"abc"]")

我想把String类型的"{"name":"abc"}"转成Object类型的{"name":"abc"}并赋值给变量Nodes,即 Nodes={"name":"abc"}就好了。

 1 $.ajax({
 2     type: "post",
 3     url: "JsonHandler.ashx",
 4     data: "qmrfrv-btt-rg-=gtr",
 5     beforeSend: function () { $("#reg_msg").text("正在提交..."); },
 6     success: function (mydata) {
 7       
 8         var jsonstr = $.parseJSON(mydata);
 9         alert(typeof (jsonstr));
10         alert(jsonstr.toJSONString());
11         zNodes = jsonstr;//这里是重点,目前值是[Object]
12     },
13     error: function () { $("#reg_msg").css("color", "red").text("错误!请重试!"); }
14 });

我想得到的是这样的:

 1 var nodes= ["Id": 1,
 2               "ParentId": 0,
 3               "Title": "WindowsAPIs",
 4               "Value": null,
 5               "IsLeaf": false,
 6               "Children": [
 7                 {
 8                     "Id": 2,
 9                     "ParentId": 1,
10                     "Title": "HttpHelper",
11                     "Value": "2",
12                     "IsLeaf": true,
13                     "Children": null
14                 },
15                 {
16                     "Id": 3,
17                     "ParentId": 1,
18                     "Title": "HttpHandlper",
19                     "Value": "3",
20                     "IsLeaf": true,
21                     "Children": null
22                 }];        

而不是 var nodes=[Object]

悠扬的牧笛的主页 悠扬的牧笛 | 初学一级 | 园豆:156
提问于:2015-09-06 14:13
< >
分享
最佳答案
0

你的第一层是对象还是数组?

奖励园豆:5
顾晓北 | 专家六级 |园豆:10844 | 2015-09-06 15:20

第一层是数组啊~ 用索引访问对象是可以的

悠扬的牧笛 | 园豆:156 (初学一级) | 2015-09-06 16:07

@信息时代的缔造者: 你的意思是zNodes = jsonstr,jsonstr还是对象,赋值给zNodes就成了字符串?

顾晓北 | 园豆:10844 (专家六级) | 2015-09-06 16:16

@顾晓北: 我的意思是,直接把jsonstr赋给zNodes后,alert(zNodes)是[Object],我想要的是["key":"value"],而不是[Object].有没有什么方法可以获取["key":"value"]。

悠扬的牧笛 | 园豆:156 (初学一级) | 2015-09-06 22:42

@信息时代的缔造者: 你这个是对象,直接alert就是object把?获取,你直接遍历获取就行。。。

顾晓北 | 园豆:10844 (专家六级) | 2015-09-07 09:01

@顾晓北: 这样的话,实在麻烦,难道没有一个可以直接获取整个对象的方法?我觉得不大可能。谢了。

悠扬的牧笛 | 园豆:156 (初学一级) | 2015-09-07 09:19

@信息时代的缔造者: 呵呵,希望你找到,然后在这里回复我一下,让我也知道知道。

顾晓北 | 园豆:10844 (专家六级) | 2015-09-07 09:47
其他回答(5)
0

f12调试下.....

吴瑞祥 | 园豆:29449 (高人七级) | 2015-09-06 14:35

已调试,得到的值是Object,不是我想要的。

支持(0) 反对(0) 悠扬的牧笛 | 园豆:156 (初学一级) | 2015-09-06 14:40

@信息时代的缔造者: 你要的是json对象还是json字符串?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2015-09-06 14:43

@吴瑞祥: 要的是json整个对象 把整个对象赋值给一个变量,生成一棵树。

支持(0) 反对(0) 悠扬的牧笛 | 园豆:156 (初学一级) | 2015-09-06 15:01

要的是:

1 {
2 
3 ["key":"Value"] ,
4 
5 ["key":"Value"] 
6 
7 }

而不是:

"{

["key":"Value"] ,

["key":"Value"] 

}"

支持(0) 反对(0) 悠扬的牧笛 | 园豆:156 (初学一级) | 2015-09-06 15:04

@信息时代的缔造者: ...你的基础太差...首先{  ["key":"Value"] ,  ["key":"Value"]  }是错误的,正确的是[  {"key":"Value"} ,  {"key":"Value"}  ]

而且js对象本来就是一个键值对.可以直接用字段名为下标获取值.错误概念太多..不知道从哪里说起.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2015-09-07 12:09
0

$.parseJSON()获取到的已经是json对象了。需要什么,直接按对象的方式取就是了。

meclus | 园豆:220 (菜鸟二级) | 2015-09-06 16:28

需要整个JSON对象,但是返回的是Object。

支持(0) 反对(0) 悠扬的牧笛 | 园豆:156 (初学一级) | 2015-09-06 22:32
0

 <script>
        $(function () {
            var str = "{ \"name\":\"test\",\"sex\":\"0\"}";
            alert(str);
            var obj = JSON.parse(str);
            var obj2 = JSON.stringify(str);
            alert(typeof (obj));
            alert(obj.name);
        });
    </script>

唯我独萌 | 园豆:537 (小虾三级) | 2015-09-07 14:23
0

 eval("(" + jsonstr+ ")");

半哭半笑半颗心° | 园豆:3 (初学一级) | 2015-09-07 15:14
0

N多人给出的答案是把字符串转成JSON对象,并没有仔细看问题。这个问题解决了,是我的设置方式不正确,zTree里有 关于接受JSON作为数据源的设置。转变一下思维,也许问题就解决了,不过还是感谢回答问题的人,谢谢!! 

悠扬的牧笛 | 园豆:156 (初学一级) | 2015-09-08 18:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册