2014-11-20 2 views
0

У меня есть файл журнала, который хранит в нем следующие данные образца. Файл создается с помощью какой-либо другой программы, где он продолжает добавлять такие строки в файл.Как читать следующие данные и строить в JSON?

{ 'Temperature' : 53.375 }, { 'Timestamp' : 1416429462 } 
{ 'Temperature' : 53.385 }, { 'Timestamp' : 1416459464 } 
. 
. 
and so on... 

Ну, я написал что-то подобное, чтобы получить значения. Это всего лишь пример

Мой вопрос в том, как я могу читать файл по строкам и генерировать выход JSON из него? Вывод должен выглядеть как этот

{ 
    "city": [ 
     { 
      "Temperature": 53.375, 
      "Timestamp": 1416429462 
     }, 
     { 
      "Temperature": 53.385, 
      "Timestamp": 1416459464 
     } 
    ] 
} 

Я не очень опытный с JQuery, так что я, честно говоря, не знаю, как подойти к этой проблеме.

ответ

1

Это немного грязный, но стоит попробовать. Применимо к вашей ситуации

//Assuming this is the content of the file 
var q = "{ 'Temperature' : 53.375 }, { 'Timestamp' : 1416429462 }{ 'Temperature' : 53.385 }, { 'Timestamp' : 1416459464 }" 


q = replaceAll(q,"'","\""); 
q = replaceAll(q,"}, {",","); 
q = replaceAll(q,"}{","},{"); 
//Instead of above line you may have to try this below variation. Which considers a new line character 
q = replaceAll(q,"}\n{","},{"); 
q = "{\"City\":["+q+"]}"; 

//An alert for you to see what your string looks like now 
alert(q); 
// this is the final Json object 
var result = $.parseJSON(q) 

function replaceAll(str, find, replace) { 
    var i = str.indexOf(find); 
    if (i > -1){ 
    str = str.replace(find, replace); 
    i = i + replace.length; 
    var st2 = str.substring(i); 
    if(st2.indexOf(find) > -1){ 
     str = str.substring(0,i) + replaceAll(st2, find, replace); 
    }  
    } 
    return str; 
} 
+0

О, хорошо! но это может быть не подходящее решение для очень больших данных? Так или иначе, это решает проблему, поэтому я принимаю это. Большое спасибо. – Bhavyanshu

1

Вы можете сделать это в многомерном виде массива и использовать JSON.stringify форматировать его JSon

var result =[{ 'Temperature' : 53.375 }, { 'Timestamp' : 1416429462 }]; 
var data = {"city" : result}; 
var json = JSON.stringify(data); 
alert(json); 
+0

Но выход выходит немного иначе, чем требуется. '' '{ "город": [ { "Температура": 53,375 }, { "Отметка": 1416429462 }, { "Температура": 53,385 }, { "Отметка" : 1416459464 } ] } '' 'Посмотрите на результат (упомянутый в вопросе), который я хочу. – Bhavyanshu

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