Непоследовательный вывод из JSON.stringify - PullRequest
0 голосов
/ 13 сентября 2010

Извините, если это репост, но я не смог найти свой вопрос после того, как опубликовал его.У меня есть приложение rails, которое рендерит строку json и хранит ту же строчку в БД.Выходные данные с начальной страницы, которая получает выходные данные, и страница, на которой отображаются данные из базы данных, имеют разные выходные данные.Данные и функция для форматирования данных идентичны.Я в тупике.

функция:

function prettyPrint(jsonStr) {
   var jsonObj = jQuery.parseJSON(jsonStr);
   return '<pre>' + JSON.stringify(jsonObj,null,'\t') + '</pre>';
}

данные:

{"Account":{"account_id":1},"response_details":[],"return_code":200,"Devices":[{"imei":"1234","name":"Device 1"},{"imei":"54321","name":"device 3"},{"imei":"354476024650842","name":"device 4 [no data]"},{"imei":"55124","name":"BlackBerry (8800)"},{"imei":"1234567890","name":"Garmin Sample"},{"imei":"987654321","name":"Second Garmin"},{"imei":"546787545678","name":"Tower 1"}]}

вывод 1: (из ajax)

{
    "Account": {
        "account_id": 1
    },
    "response_details": [],
    "return_code": 200,
    "Devices": [
        {
            "imei": "1234",
            "name": "Device 1"
        },
        {
            "imei": "54321",
            "name": "device 3"
        },
        {
            "imei": "354476024650842",
            "name": "device 4 [no data]"
        },
        {
            "imei": "55124",
            "name": "BlackBerry (8800)"
        },
        {
            "imei": "1234567890",
            "name": "Garmin Sample"
        },
        {
            "imei": "987654321",
            "name": "Second Garmin"
        },
        {
            "imei": "546787545678",
            "name": "Tower 1"
        }
    ]
}

вывод2: (из базы данных)

{
    "Account": {
        "account_id": 1
    },
    "response_details": "[]",
    "return_code": 200,
    "Devices": "[{\"imei\": \"1234\", \"name\": \"Device 1\"}, {\"imei\": \"54321\", \"name\": \"device 3\"}, {\"imei\": \"354476024650842\", \"name\": \"device 4 [no data]\"}, {\"imei\": \"55124\", \"name\": \"BlackBerry (8800)\"}, {\"imei\": \"1234567890\", \"name\": \"Garmin Sample\"}, {\"imei\": \"987654321\", \"name\": \"Second Garmin\"}, {\"imei\": \"546787545678\", \"name\": \"Tower 1\"}]"
}

Ответы [ 2 ]

0 голосов
/ 14 сентября 2010

Я закончил форматирование вывода с помощью ruby ​​

<code>  <% response = JSON.load(@order.response) %>
  <% main_counter = 1 %>
  <pre>
  {
  <% response.each do |k,v| -%>
     <% if v.is_a?(Hash) %>
        <%=k%>: {
           <% counter = 1 %>
           <% v.each do |k2,v2| -%>
           <%=k2%>: <%=v2.to_json%><% if counter < v.size %>,<%end%>
           <% counter += 1 %>
           <%end%>
        }<% if main_counter < response.size %>,<%end%>
     <% elsif v.is_a?(Array) %>
        <%=k%>: [
           <% counter = 1 %>
           <% v.each do |v2| -%>
           <%=v2.to_json%><% if counter < v.size %>,<%end%>
           <% counter += 1 %>
           <%end%>
        ]<% if main_counter < response.size %>,<%end%>
     <%else%>
        <%=k%>: <%=v%><% if main_counter < response.size %>,<%end%>
     <%end%><% main_counter += 1 %>
  <%end%>
  }
  
0 голосов
/ 14 сентября 2010

И массив «Устройства», и массивы «response_details» кодируются как строки, а не как массивы. Найдите, где это происходит, в коде, который помещает данные в базу данных, и исправьте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...