2014-01-29 5 views
0

Привет всем Я звоню в функцию javascript на WebView в android. Я отправляю данные JSON, которые передадут значение html. Данные моего JSON приведены в следующем формате, который я проверил с помощью онлайн-инструментов.Вызов функции Javascript из json

{"Results":{"Number of Tests":"2","Latency(avg)":"17","Failure":"0%","Latitude":"12° 55' 35.5872'' N","Longitude":"77° 36' 4.16916'' E","Latency(max)":"18","Latency(min)":"17"},"TestStaus":"Passed","Test":"Game Test"} 

Я использую следующий код для отображения проанализированного результата в html с помощью jquery.

var jsonObject = JSON.stringify(vk); 
document.write(jsonObject); 
$.each($.parseJSON(jsonObject), function(k, v) 
{ 
    document.write("<tr><td>" + k + "</td><td>" + v + "</td></tr>"); 
}); 

Это дает мне выход в следующем порядке

  1. Параметр Значение
  2. Результаты [объект Object]
  3. TestStatus выдержало испытание
  4. Тест игры

Пожалуйста, помогите как читать все результаты. Почему он читает объект объекта.

+0

В чем проблема? "Document.write (JSONObject);" вывод "Объект"? Это нормально, поскольку jsonObject не имеет метода toString(). – hindmost

+0

Используйте 'console.log (k)' и просмотрите в консоли. Вы не можете document.write json-объект. Это слишком сложно, чтобы просто добавляться на эту страницу. – lorless

ответ

1

Просто использовать рекурсию. Вы должны иметь возможность обрабатывать многомерные объекты. Кроме того, я обычно использую jquery только для DOM или AJAX. Для чего-то подобного вам может и не понадобиться.

Ваш Json

var vk = {"Results":{ 
    "Number of Tests":"2", 
    "Latency(avg)":"17", 
    "Failure":"0%", 
    "Latitude":"12° 55' 35.5872'' N", 
    "Longitude":"77° 36' 4.16916'' E","Latency(max)":"18", 
    "Latency(min)":"17" 
     }, 
    "TestStaus":"Passed", 
    "Test":"Game Test"}; 

Рекурсивные функции

 function drawJSON(obj){ 
     for(var key in obj){ 
     if(typeof obj[key] === 'object'){ 
     drawJSON(obj[key]); 
     continue; 
     } 
     document.write("<div><span>" + key + "</span><span>" + obj[key] + "</span> </div>"); 
     } 
    } 

    drawJSON(vk); 

DEMO

1

Результаты являются объектами, поэтому они отображаются как [объект объекта]. Вы можете сделать это:

function printEach(jsonObject) { 
     $.each(jsonObject, function(k, v) 
     { 
      if(typeof v === 'object') { 
       printEach(v); 
      } else { 
       console.log("<tr><td>" + k + "</td><td>" + v + "</td></tr>"); 
      }   
     }); 
    } 

    var vk = {"Results":{"Number of Tests":"2","Latency(avg)":"17","Failure":"0%","Latitude":"12° 55' 35.5872'' N","Longitude":"77° 36' 4.16916'' E","Latency(max)":"18","Latency(min)":"17"},"TestStaus":"Passed","Test":"Game Test"}; 
    var jsonObject = JSON.stringify(vk); 
    printEach($.parseJSON(jsonObject)); 

Вы можете увидеть скрипку http://jsfiddle.net/58grs/1/

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