2015-08-25 2 views
0

Эй, я хотел бы преобразовать эту строку в формате JSON:Преобразование строки в формате JSON

var newPart = '{\'' + name + '\': {\'content-type\' : ' + type + ', \'content\': ' + content + ',\'type\': \'content\'}}'; 

Результат дает следующую строку:

{'partHtml': {'content-type' : text/html, 'content': dfg,'type': 'content'}} 

Я хотел бы получить объект JSON из этой строки , я попытался следующий, но он терпит неудачу с ошибкой: «SyntaxError: Неожиданный маркер«»

newPart = JSON.parse(newPart); 

Я пробовал без «с небольшими изменениями, но проблема сохраняется.

Благодарим за помощь.

+2

Изменить все одиночные кавычки удвоить. – rlemon

+1

все строки должны быть в двойные кавычки { "partHtml": { "Content-Type": "текст/html", "содержание": "ГПД", "типа": "содержание" } } –

+0

Ваша строка не представляет JSON. См. Спецификацию JSON по адресу http://json.org –

ответ

-1

В вашем JSON есть ошибка. text/html - это строка, но она не содержит котировок.

Попробуйте добавить:

var newPart = '{"' + name + '": {"content-type" : "' + type + '", "content": "' + content + '", "type": "content"}}' 

Пожалуйста, обратите внимание, что если вы хотите пух действительного JSON, вы должны использовать двойные кавычки. Проверка JSON в любом интернет-инструмента, как http://jsonlint.com/

{ 
    "partHtml": { 
     "content-type" : "text/html", 
     "content": "dfg", 
     "type": "content" 
    } 
} 

Кроме того, если ваши переменные содержат двойные кавычки, вы получите сообщение об ошибке при разборе JSON. Этот ответ будет работать для вашего кода, но я не рекомендую его в реальных приложениях, потому что это плохая практика. Для лучшей практики, пожалуйста, посмотрите на то, что mikeecb сделал с моим ответом.

+0

Я исправил, чтобы иметь такую ​​цитату везде: {'partHtml': {'content-type': 'text/html', 'content': 'fgh', ' type ':' content '}}, но такая же ошибка: SyntaxError: Неожиданный токен' –

+0

, пожалуйста, еще раз проверьте, я отредактировал ответ и добавил исправления непосредственно к вашему коду. –

+0

Что делать, если какая-либо из ваших переменных содержит двойные кавычки? – mguimard

0

Просто замените эту строку с

var newPart = '{\"' + name + '\": {\"content-type\" : \"' + type + '\", \"content\": \"' + content + '\",\"type\": \"content\"}}'; 
+0

Я сделал то же самое. Это то, что у меня есть в результате, но по-прежнему та же проблема: {'partHtml': {'content-type': 'text/html ',' content ':' fgh ',' type ':' content '}} –

+0

@Xima Пожалуйста, проверьте отредактированный ответ :) –

0

JSON строки цитируются с помощью ", не '.
Таким образом, ваш пример должен быть:

var newPart = '{"' + name + '": {"content-type" : ' + type + ', "content": ' + content + ',"type": "content"}}'; 
newPart = JSON.parse(newPart); 

Или, если у вас уже есть все, что нужно, можно построить объект сразу без использования JSON.parse():

var newPart = {"name": {"content-type": type, "content": content, "type": "content"}}; 
0

Это очень плохая практика и небезопасный метод. Вам просто нужно создать объект.

var newPart = {  
    "content-type" : "text/html", 
    "content": "dfg", 
    "type": "content"  
} 
+0

Объект, который вы создаете здесь, отличается от того, который нужен OP. вы оставили ключ «partHtml». –

+0

Независимо от того, как этот объект выглядит или содержит, это самый эффективный и безопасный метод. – mguimard

+0

Это не ответ :) –

0

Это недействительный JSON, поэтому его невозможно разобрать. Действующая версия будет выглядеть следующим образом:.

{"partHtml": {"content-type": "text/html", "content": "dfg", "type": "content"}} 

Вы не можете использовать символ ', вам нужно "вместо

2

Хотя ответ Лоренцо правильно, есть причина, почему вы строите строку как это? Почему бы просто не построить объект для начала?

var type = 'text/html'; 
var content = 'dfg'; 
var name ='partHtml' 

var newPart = {}; 
newPart[name] = {content_type: type, content: content, type: 'content'}; 
0

JSON строки в кавычки с использованием "

` вар NewStr ="{ '' + имя + ": {" Content-Type ":" '+ тип +», "содержание": «» + содержание +», "тип": "содержание"}} ';

var newJson = JSON.parse(newStr);

или

var newJson = eval('(' + newStr + ')');

0

вы должны быть осторожны при слиянии строк. Вместо того, чтобы создавать проблемы с делимитированием строк и лиц, я предлагаю создать экземпляр объекта и назначить свойства «на лету».

var newPart = {}; 
newPart.name = {content : content}; 
newPart.name['content-type'] = type; 

и так далее ..

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