2015-11-08 5 views
2

У меня есть строка, как это:Как сделать JSON.parse строку с тегом HTML?

{"Restriction":"<wbr><a href=\"https://www.google.com.tw/#q=%E4%B8%AD%E5%9C%8B\" 
target=\"_blank\"><span style=\"color: rgb(0, 0, 205);\">more info</span></a></wbr>"} 

, но я не могу разобрать его с JSON.parse. Мой код выглядит следующим образом:

var s = '{"Restriction":"<wbr><a href=\"https://www.google.com.tw/#q=%E4%B8%AD%E5%9C%8B\" target=\"_blank\"><span style=\"color: rgb(0, 0, 205);\">more info</span></a></wbr>"}'; 
var obj = JSON.parse(s); 

и я получил ошибку:

Uncaught SyntaxError: Unexpected token.

Моя догадка 「\"」сделал что-то неправильно, но я не могу изменить строку, потому что я получил его от позвоните на удаленный API Вот мой код:.

// We need this to build our post string 
var querystring = require('querystring'); 
var http = require('http'); 
var fs = require('fs'); 

function PostCode(codestring) { 

    // An object of options to indicate where to post to 
    var post_options = { 
     host: 'api.domain', 
     port: '80', 
     path: '/webservice/service.asmx/method?key=123456', 
     method: 'GET', 
     headers: { 
      'Content-Type': 'text/plain' 
     } 
    }; 

    // Set up the request 
    var post_req = http.request(post_options, function(res) { 
     res.setEncoding('utf8'); 
     res.on('data', function (chunk) { 
     var x = {}; 
      console.log('Response down'); 
      x = JSON.parse(chunk); 
     }); 
    }); 

    post_req.end(); 

} 
PostCode(); 
+0

Thank you Marcos :) –

+0

'Я получил это от вызова удаленного API'. Как это может быть правдой? Я думаю, вы ответите на копируемый ответ API и используете как есть в своем коде. Ваша строка в действительности не имеет обратных косых черт, 'replace' не может помочь здесь. –

ответ

2

Вы не можете разобрать кусок данных, вам нужно загрузить все.

0

чтобы разобрать эти атрибуты HTML вы должны удвоить избежать цитаты: \\», потому что они два слоя вниз. Или, желательно, возможно, использовать одинарные кавычки для атрибутов.

0

Вы можете использовать replace:

var s = '{"Restriction":"<wbr><a href=\"https://www.google.com.tw/#q=%E4%B8%AD%E5%9C%8B\" target=\"_blank\"><span style=\"color: rgb(0, 0, 205);\">more info</span></a></wbr>"}'; 
console.log(s); 
console.log(s.replace(/\"/g, "")); 
+0

Как это может помочь? –

4

Это не является допустимым JSON. Обратные косые черты также должны быть экранированы.

var s = '{"Restriction":"<wbr><a href=\\"https://www.google.com.tw/#q=%E4%B8%AD%E5%9C%8B\\" target=\\"_blank\\"><span style=\\"color: rgb(0, 0, 205);\\">more info</span></a></wbr>"}'; 
JSON.parse(s); // correct 

Я думаю, вы должны опубликовать отчет об ошибке в этом remote API.

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