2014-09-03 2 views
-1

используя d3.json как конвертировать из этого форматаim пытается отформатировать мой json-файл с помощью d3.json(). Может кто-нибудь помочь мне

[{ "HANDLERID": "AET55V8366", "HANDLER_MODEL": "AETRIUM 55V8", "Начало1": "2014-03-30 00:00:00 "," END1 ":" 2014-06-17 02:44:11 "," VAL1 ":" 49.7950 ", " START2 ":" 2014-06-17 02:44:11 "," «END2»: «2014-07-18 18:13:51», «VAL2»: «69.7130», «START3»: «2014-07-18 18:13:51», «END3»: «2014- 09-04 5:28:22" , "val3": "99.00"},

{ "HANDLERID": "AET55V8441", "HANDLER_MODEL": "AETRIUM 55V8", "start1": "2014-02 -19 00:00:00 "," END1 ":" 2014-05-28 05:23:15 "," VAL1 ":" 50.0350 ", " START2 ":" 2014-05-28 05:23:15 "," END2 ":" 2014-07-06 1 2:20:33 »,« VAL2 »:« 70.0490 », « START3 »:« 2014-07-06 12:20:33 »,« END3 »:« 2014-09-03 10:46:30 », "val3": "100.00"},

{ "HANDLERID": "AET55V8445", "HANDLER_MODEL": "AETRIUM 55V8", "start1": "2014-06-14 00:00:00",» END1 ":" 2014-07-23 09:36:38 "," VAL1 ":" 51.7700 ", " START2 ":" 2014-07-23 09:36:38 "," END2 ":" 2014-08 -08 03:51:17 "," VAL2 ":" 72.4780 ", " START3 ":" 2014-08-08 03:51:17 "," END3 ":" 2014-08-31 19:13:17 "," VAL3 ":" 103,00 "},

в этот формат ??????????

var tasks = [ {"startDate": новая дата ("2014-03-30 00:00:00"), "endDate": новая дата ("2014-06-17 02:44:11"), «taskName»: «AET55V8366», «status»: 49.7950}, {«startDate»: новая дата («2014-06-17 02:44:11»), «endDate»: новая дата («2014- 07-18 18:13:51 ")," taskName ":" AET55V8366 "," status ": 69.7130}, {" startDate ": новая дата (" 2014-07-18 18:13:51 "), endDate ": новая дата (" 2014-09-04 05:28:22 ")," taskName ":" AET55V8366 "," status ": 99.00},

{" startDate ": новая дата (" 2014- 02-19 00:00:00 ")," endDate ": новая дата (" 2014-05-28 05:23:15 ")," taskName ":" AET55V8441 "," status ": 50.0350}, {" startDate ": новая дата (" 2014-05-28 05:23:15 ")," endDate ": новая дата (" 2014-07-06 12:20:33 ")," taskName ":" AET55V8441 "," status ": 70.0490}, {" startDate ": новая дата (" 2014-07-06 12:20:33 ")," endDate ": новая дата (" 2014-09-03 10 : «Задающее имя»: «AET55V8441», «статус»: 100,00},

{«startDate»: новая дата («2014-06-14 00:00:00»), «endDate» ": новая дата (" 2014-07-23 09:36:38 ")," taskName ":" AET55V8445 "," status ": 51.7700}, {" startDate ": новая дата (" 2014-07-23 09 : 36: 38 ")," endDate ": новая дата (" 2014-08-08 03:51:17 ")," taskName ":" AET55V8445 "," status ": 72.4780}, {" startDate ": новый Дата («2014-08-08 03:51:17»), «endDate»: новая дата («2014-08-31 19:13:17»), «taskName»: «AET55V8445», «статус»: 103.00 }, ];

ответ

0
var my=[]; 
d3.json("data.json", function(data){ data.forEach(function(d){ my.push(d);}); }); 
var result=[]; 
my.forEach(function(d, i){ 
result.push({"startDate": (d3.time.format("%Y-%m-%d %X").parse(my[i].START1)), 
      "endDate": (d3.time.format("%Y-%m-%d %X").parse(my[i].END1)), 
      "taskName": my[i].HANDLERID, 
      "status": my[i].VAL1}); 
result.push({"startDate": (d3.time.format("%Y-%m-%d %X").parse(my[i].START2)), 
      "endDate": (d3.time.format("%Y-%m-%d %X").parse(my[i].END2)), 
      "taskName": my[i].HANDLERID, 
      "status": my[i].VAL2}); 
result.push({"startDate": (d3.time.format("%Y-%m-%d %X").parse(my[i].START3)), 
      "endDate": (d3.time.format("%Y-%m-%d %X").parse(my[i].END3)), 
      "taskName": my[0].HANDLERID, 
      "status": my[i].VAL3}); 
}); 
console.log(result); 

массив результатов - это массив, который вы ищете. Надеюсь, это поможет.

data.json - это файл, содержащий формат данных выше в вопросе и наблюдаемый массив результатов.

+0

Эй! ты классный! большое спасибо за быстрый ответ. Это именно то, что мне нужно, и это работает так, как я ожидал !. Большое спасибо! – elvis

+0

Если вам это подходит, вы можете проголосовать/принять ... :) –

+0

уверен! мне нужно щелкнуть вкладку голосования, как ???? им жаль, что это мой первый раз здесь, в stackoverflow, как я могу принять пользователь? – elvis

0

Непонятно, что вы хотите здесь сделать. Я вижу, что вы хотите извлечь дату и время начала и окончания, но есть 3 варианта, поэтому я только что выбрал 1. Также вы должны знать, что вы не можете создать новый объект даты внутри объекта json. Вам нужно сделать это снаружи и передать его в объект.

Во всяком случае, вы сможете добиться того, что вам нужно, с помощью кода, приведенного ниже (что похоже на концепцию, которую опубликовал saikiran, чуть более компактный (и мне было слишком лениво разобрать каждый из трех времен объекты).

d3.json("rawJson.json", function (error, json){ 
    console.log(json) 
    var newJson = []; 
    var timeFormat = d3.time.format("%Y-%m-%d %H:%M:%S"); 

    json.forEach(function (d,i) { 
     el = { 
      "startDate": timeFormat.parse(d.START1), 
      "endDate": timeFormat.parse(d.END1), 
      "taskName": d.HANDLERID, 
      "status": d.VAL1 
     } 
     newJson.push(el) 
    }) 
console.log(newJson); 
}) 

Просто последнее, что вы отправили json, достаточно сложно прочитать. Я бы предложил использовать такую ​​услугу, как jsonlint. Это делает ваш json более понятным для человека, а также проверяет его на наличие структурных ошибок.

+0

Спасибо за ответ, извините, если мои данные json трудно читать. Я первый раз задаю здесь вопрос, и я очень рад, что получаю быстрый и полезный ответ всем вам. Ваша помощь так высоко ценится – elvis

+0

привет, как я могу добавить новую дату? поэтому мои данные будут выглядеть как var tasks = [ {"startDate": новая дата ("2014-03-30 00:00:00"), "endDate": новая дата ("2014-06-17 02:44: 11 ")," TaskName ":" AET55V8366" , "статус": 49,7950}]; – elvis

Смежные вопросы