作者don750421 (1+1≠2)
看板Web_Design
标题[问题] JSON转成Object?
时间Wed Sep 2 20:12:41 2015
最近使用一个套件叫 select2
因为我的资料来源来自DB,所以我在後端透过DataTable转成select2 要吃的格式...
Select2要吃的格式大致长这样
var aa = [{id:'2',text:'philosophy',children: [{id: '2', text:'ethics'},
{id: '3', text:'eefecs'},
{id: '4', text:'eefecs'}]},
{id:'3',text:'sociology', children: [{id: '2', text:'ethics'},
{id: '5', text:'eefeet'},
{id: '8', text:'eefecs'}]},
{id:'4',text:'ddgeology', children: [{id: '9', text:'ethscs'},
{id: '8', text:'eefecs'},
{id: '7', text:'asefcs'}]}];
如果我在前端将aa传给select2 元件,确实可以使用,因为会直接视为aa有三个物件。
但是,如果我透过AJAX,在後台组成跟aa一样的字串,
再透过JSON传到前台。并使用一个变数(假设为bb)承接。
我将bb丢给select2元件,会抛出错误,而在前端用DEBUG看,bb会是一个字串。
这时又不会将bb视为3个物件。
於是,想说用JSON.parse(bb)转成物件,但又会抛出Expection.
请问各位前辈,後端字串要如何像aa变数一样变成三个物件。
先谢谢各位前辈指点。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.39.106.194
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1441195965.A.AF5.html
1F:推 Ayukawayen: JSON的规范比JS宣告变数的文法严 引号逗号都要注意 09/02 20:32
2F:→ Ayukawayen: 建议var bb = JSON.stringify(aa); JSON.parse(bb) 09/02 20:33
3F:→ Ayukawayen: 後台丢出来的字串 用JSON encoder包 不要自己组 09/02 20:34
感谢前辈指点,但是透过您所说的方式...
用DEBUG查看bb,仍然是字串@@
在後台我有使用JSON.NET组成再往前台丢...
return new JsonConvert.SerializeObject(
new object{Result:true,ResultText:jsonstr,ResultMsg:ErrMsg });
前台接回来的方式就...
success: function(data){
if(data.Result){ bb = data.ResultText}
},
但是就遇到上述的问题...晕~
※ 编辑: don750421 (114.39.106.194), 09/02/2015 22:04:18
※ 编辑: don750421 (114.39.106.194), 09/02/2015 22:05:48
4F:→ lovving777: 前端可以使用typeof()确认物件是String或Object 09/03 01:04
5F:→ lovving777: 试试看var bb = JSON.stringify(aa); 09/03 01:06
6F:→ lovving777: bb = JSON.parse(bb); 09/03 01:06
7F:→ lovving777: JSON.stringify() 是将JSON Object转为String 09/03 01:09
8F:→ lovving777: JSON.parse() 是将JSON String 转为物件 09/03 01:09
9F:→ lbeeon: 有 response的资料? 话说json.net和c#原生转出来会不太一 09/03 18:38
10F:→ lbeeon: 样 09/03 18:38
11F:推 scars: 後台输出的JSON格式错了 09/06 01:13
12F:推 brian90191: json object的key要用文字当做键值吧 09/06 18:02
13F:→ brian90191: Result、ResultText、ResultMsg 都要加上引号("") 09/06 18:03