后臺(tái):
TreeNode node = new TreeNode();
node.data.titleEn = replaceTitleTag(data.TitleNo + " " + data.TitleText);
node.data.title = node.data.titleEn;
node.attr.id = data.ID.ToString();
System.Web.Script.Serialization.JavaScriptSerializer j = new System.Web.Script.Serialization.JavaScriptSerializer();
json = j.Serialize(node);
result = "{success:true,info:" + info + ",json:" + json + "}";//嵌套json
return result;
前臺(tái):
function(data) {
// alert(data);
var data = eval("(" + data + ")");
if (data["success"] == false) {
alert(data.info);
}
if (data.success == true) {
var jslia = data.json;
// var jslia = { "attr": { "href": "", "id": "7059" }, "data": { "attr": { "href": "", "id": 7059 }, "title": "添加的節(jié)點(diǎn) " }, "state": "closed" };
$("#treePanel").jstree("create", null, "last", jslia, null, true);
}
、、、參考:
DataContractJsonSerializer 可以處理其中的鍵類型不是字符串的詞典,而 JavascriptSerializer 則無法處理,在這一方面前者的功能更為強(qiáng)大。但后者與 JSON 的兼容性更好。DataContractJsonSerializer 將其表示為 [{"Key":"one","Value":1},{"Key":"two","Value":2}]
JavascriptSerializer 將其表示為 {“one”:1,”two”:2}
http://zhidao.baidu.com/question/159760746.html第二個(gè)問題是,裝箱后數(shù)據(jù)類型的丟失問題,例如把一個(gè)Guid類型的數(shù)據(jù)給一個(gè)object的屬性或成員,而序列化后,再反序列化回來的對(duì)象的值(object)則不再是一個(gè)Guid的值了,而變成了一個(gè)string類型的值了。這個(gè)問題是我在把一些界面操作數(shù)據(jù)保存到本地文本文件然后加載這些文件序列化的時(shí)候發(fā)現(xiàn)的。這個(gè)問題對(duì)于DataContractJsonSerializer來說似乎是個(gè)很難解決的問題。所以在使用DataContractJsonSerializer的時(shí)候應(yīng)盡可能的避免使用object類型的設(shè)計(jì)