Все, я видел много примеров, говорящих о том, как разобрать json на объект js (или преобразовать json в объект js) в SO. Но я не видел пример, который привязывает json к уже определенному объекту js. Теперь у меня есть некоторые проблемы с этим, когда я пытаюсь это сделать. Пожалуйста, помогите мне просмотреть его. Благодарю.JSON Bind to Javascript Object
То, что я сделал до сих пор выглядит, как показано ниже:
top=function()
{
this.encoding ='';
this.nodes=[];
this.lastid='';
//I don't how to defined the attributes key in json which is a object.
//I think there should exist a parse and toJson function;
//this.parse= function(jsonstring){...};
//this.toJson=function(){var jsonstr=....;return jsonstr;};
};
group=functon()
{
this.id='';
this.type='';
this.subnodes=[];
this.tagname='';
//....
}
top
корень, который содержит неопределенные числа block
которых является самостоятельной включен объект.
и Json генерируется Jackson, который выглядит, как показано ниже.
{
"nodes": [
{
"type": "group",
"id": 11,
"tagName": "blockrow",
"prefix": "aa",
"cutomTag": null,
"attributes": {
"width": "12"
//...more
},
"subNodes": [
{
"type": "group",
"id": 111,
"tagName": "blockcol",
"prefix": "aa",
"cutomTag": null,
"attributes": {
"width": "4"
},
"subNodes": [
{
"type": "group",
"id": 1111,
"tagName": "section",
"prefix": "aa",
"cutomTag": null,
"attributes": {
"title": "NewSection",
"width": "12"
},
"subNodes": [
{
"type": "leaf",
"id": 11111,
"tagName": "message",
"prefix": "aa",
"cutomTag": null,
"attributes": {
"key": "aa_login_success"
}
}
]
}
]
},
{
"type": "group",
"id": 112,
"tagName": "blockcol",
"prefix": "aa",
"cutomTag": null,
"attributes": {
"width": "4"
},
"subNodes": [
{
"type": "group",
"id": 1121,
"tagName": "section",
"prefix": "aa",
"cutomTag": null,
"attributes": {
"title": "NewSection",
"width": "12"
},
"subNodes": [
{
"type": "leaf",
"id": 11211,
"tagName": "message",
"prefix": "aa",
"cutomTag": {
"type": "cutomTag",
"beginPos": 20,
"endPos": 50,
"id": -1
},
"attributes": {
"key": "aa_login_failed"
}
}
]
}
]
},
{
"type": "group",
"id": 113,
"tagName": "blockcol",
"prefix": "aa",
"cutomTag": null,
"attributes": {
"width": "4"
},
"subNodes": null
}
]
},
{
"type": "group",
"id": 12,
"tagName": "blockrow",
"prefix": "aa",
"cutomTag": null,
"attributes": {
"width": "12"
},
"subNodes": [
{
"type": "group",
"id": 121,
"tagName": "blockcol",
"prefix": "aa",
"cutomTag": null,
"attributes": {
"width": "6"
},
"subNodes": null
},
{
"type": "group",
"id": 122,
"tagName": "blockcol",
"prefix": "aa",
"cutomTag": null,
"attributes": {
"width": "6"
},
"subNodes": null
}
]
}
],
"version": 1,
"encoding": "unicode",
"lastId": 1
}
вид кода, который я бы себе выглядит, как показано ниже:
var curTop= new top();
curTop.parse(jsonstring);
//manipulate the curTop object...
//...
var jsonStr=curTop.toJson();
//convert object to json.
Я надеюсь, что мое направление до сих пор решить проблему прав, если это не так, я надеюсь, вы дадите мне какие-то комментарии.
Привет, @ Басарат, могу ли я определить его таким образом? 'This.parse = function (jsonstring) {...};' thanks. –
Таким образом, у вас будет функция для каждого экземпляра (плохо для памяти). Не говоря уже о том, что вы не сможете создать цепочку наследования. – basarat
ОК, я вижу. Благодарю. –