2012-06-05 2 views
0

У меня есть объект JSON, и я хочу отобразить его в окне «Зеркало кода». Code Mirror ожидает только строку. Когда я делаю JSON.stringify, он зажимает значения, где это массив, а не просто строка.Как конвертировать JSON в String без использования JSON.stringify?

например. Это выход JSON.stringify

{ 
    "version": "1.1", 
    "sid": "ManagementService", 
    "svcVersion": "0.1", 
    "oid": "getCurrentStatsForServiceTypes", 
    "params": { 
      "serviceTypes": "[\"rest\", \"wsdl\", \"database\", \"rss\"]" 
    } 
} 

Я хочу, чтобы результат как ...

{ 
    "version": "1.1", 
    "sid": "ManagementService", 
    "svcVersion": "0.1", 
    "oid": "getCurrentStatsForServiceTypes", 
    "params": { 
     "serviceTypes":["rest", "wsdl", "database","rss"] 
    } 
} 

Короче говоря, я хочу, чтобы преобразовать тип из объекта в строку, не влияя на значение.

Update: JSON объект является

{ 
    "version": "1.1", 
    "sid": "ManagementService", 
    "svcVersion": "0.1", 
    "oid": "getCurrentStatsForServiceTypes", 
    "params": { 
     "serviceTypes":["rest", "wsdl", "database","rss"] 
    } 
} 

Я хочу такой же, как строку. Что-то вроде этого должно работать.

'{ 
    "version": "1.1", 
    "sid": "ManagementService", 
    "svcVersion": "0.1", 
    "oid": "getCurrentStatsForServiceTypes", 
    "params": { 
     "serviceTypes":["rest", "wsdl", "database","rss"] 
    } 
}' 

Blockquote

+0

какой у вас объект json? – hvgotcodes

+0

Если ваш объект действительно содержит массив (как вы предлагаете), ваш JSON.stringify не работает. – Bergi

+0

[Нет такой вещи, как «объект JSON».] (Http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) –

ответ

0

Если параметр serviceTypes является массивом, он должен сериализовать как вы указать, что вы хотите сериализовать. У меня такое чувство, что вы помещаете строку в это свойство, а не в массив.

Когда я stringify ваш объект буквальным я получить

"{"version":"1.1","sid":"ManagementService","svcVersion":"0.1","oid":"getCurrentStatsForServiceTypes","params":{"serviceTypes":["rest","wsdl","database","rss"]}}" 

Массив не спасся, его массив.

+0

Это оригинальный объект JSON { "версия": "1.1", "Sid": "ManagementService", "svcVersion": "0,1", "OID": "getCurrentStatsForServiceTypes", "PARAMS": { \t \t \t " serviceTypes ": [" отдых», "WSDL", "база данных", "RSS"] \t \t}} Если вы JSON.stringify в Firebug консоли вы увидите массив является ESC подражают. Извините, но я не вижу способа форматировать код в своем комментарии. –

+0

Просто используйте 'char для создания встроенного кода. Как 'code' (без пробелов). Когда я помещаю ваш объект в 'JSON.stringify()' в консоли Firebug, это нормально, массив не экранирован (я пробовал 'test = {...}; JSON.stringify (test);' и direct 'JSON .stringify ({...}); '. – Wirone

+0

Я просто попробовал то, что вы упомянули в Firebug, но у меня получился другой результат. Массив экранирован. см. этот скриншот http://i.imgur.com/FOrux.png –

0

Кажется, ваш сервисТипы не представляют собой массив, а строку в вашем объекте. Попробуйте следующее:

obj.params.serviceTypes = JSON.parse(obj.params.serviceTypes); 
return JSON.stringify(obj); 
Смежные вопросы