Javascript 在javascript中解析Json对象
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8634311/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Parse Json object in javascript
提问by Lalit Chattar
hello all i have one json object like
大家好,我有一个 json 对象,例如
{"event1":{"title":"My birthday","start":"12\/27\/2011 10:20 ","end":"12\/27\/2011 00:00 "},"event2":{"title":"My birthday again","start":"12\/27\/2011 10:20 ","end":"12\/27\/2011 00:00 "}}
and i want to parse it like
我想解析它
[
{
title: 'All Day Event',
start: new Date(y, m, 1)
},
{
title: 'Long Event',
start: new Date(y, m, d-5),
end: new Date(y, m, d-2)
}]
How will i do this. i wrote this code but its givin array length 0 my code is
我将如何做到这一点。我写了这段代码,但它的数组长度为 0 我的代码是
var response = eval(data);
$.each(response, function() {
obj = {};
$.each(this, function(k, v) {
if(k=="start")
{
obj[k] = new Date(v);
}
if(k=="end")
{
obj[k] = new Date(v);
}
else
{
obj[k] = v;
}
event_data.push(obj);
});
});
回答by Billy Moon
data = JSON.parse('{"event1":{"title":"My birthday","start":"12\/27\/2011 10:20 ","end":"12\/27\/2011 00:00 "},"event2":{"title":"My birthday again","start":"12\/27\/2011 10:20 ","end":"12\/27\/2011 00:00 "}}')
arr = []
for(var event in data){
var dataCopy = data[event]
for(key in dataCopy){
if(key == "start" || key == "end"){
// needs more specific method to manipulate date to your needs
dataCopy[key] = new Date(dataCopy[key])
}
}
arr.push(dataCopy)
}
alert( JSON.stringify(arr) )
回答by Corbin
It looks like you're already using jQuery so just use $.parseJSON. (http://api.jquery.com/jQuery.parseJSON/)
看起来您已经在使用 jQuery,所以只需使用 $.parseJSON。(http://api.jquery.com/jQuery.parseJSON/)
You'll have to iterate over the object that is created though to turn the date strings into Date objects.
您必须遍历创建的对象才能将日期字符串转换为 Date 对象。
回答by Diode
var data = {
"event1": {
"title": "My birthday",
"start": "12\/27\/2011 10:20 ",
"end": "12\/27\/2011 00:00 "
},
"event2": {
"title": "My birthday again",
"start": "12\/27\/2011 10:20 ",
"end": "12\/27\/2011 00:00 "
}
};
var response = eval(data);
var events = [];
$.each(response, function(key, event) {
var obj = {};
for (var prop in event) {
obj[prop] = event[prop];
}
obj["start"] = new Date(obj["start"]);
obj["end"] = new Date(obj["end"]);
events.push(obj);
});
console.log(events);
回答by ijse
My code:
我的代码:
var datas = '{"event1":{"title":"My birthday","start":"12\/27\/2011 10:20 ","end":"12\/27\/2011 00:00 "},"event2":{"title":"My birthday again","start":"12\/27\/2011 10:20 ","end":"12\/27\/2011 00:00 "}}';
var dataObj = eval("(" + datas + ")");
var finalArr = [];
for(var i in dataObj) {
var t = dataObj[i];
finalArr.push({
title: t.title,
start: new Date(t.start),
end: new Date(t.end)
});
}
console.log(finalArr);
回答by Tarun Gupta
TO collect all item of an array and return a json object - this code is basically to get all the values of a select box .. but you can modify it as per your requirement.
收集数组的所有项目并返回一个 json 对象 - 此代码基本上是获取选择框的所有值..但您可以根据您的要求对其进行修改。
collectData: function (arrayElements) {
var main = [];
for (var i = 0; i < arrayElements.length; i++) {
var data = {};
this.e = arrayElements[i];
data.text = arrayElements[i].text;
data.val = arrayElements[i].value;
main[i] = data;
}
return main;
},
TO parse the same data we go through like this
解析我们这样经历的相同数据
dummyParse: function (json) {
var o = JSON.parse(json); //conerted the string into JSON object
$.each(o, function () {
inner = this;
$.each(inner, function (index) {
alert(this.text)
});
});
}