2014-11-27 5 views
-1

У меня есть требование, когда я получаю строку json из другого API, и эта строка может быть или не быть допустимой строкой JSON. Как проверить правильность строки JSON или нет, если она недействительна, как я могу сделать ее действительной? Я хочу спросить, есть ли определенные символы, которые должны быть экранированы, и если они не экранированы, тогда мы получаем ошибку при разборе. Есть ли у нас API, чтобы строка JSON была действительной?Как сделать строку JSON Действительной, если это не так?

Я получил код, чтобы проверить, если строка JSON является действительным или нет

Javascript

if (/^[\],:{}\s]*$/.test('{section : "ABCDEFGHI"JKLMNOP"}'.replace(/\\["\\\/bfnrtu]/g, '@'). 
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). 
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { 
    console.log('valid'); 
}else{ 
    console.log('Not a valid'); 
} 
+0

* «Есть ли у нас API, чтобы строка json была действительной?» * Не встроен. Похоже, вы уже знаете, как проверить, действительно ли это или нет ([с тех пор как вы получили код здесь] (http://stackoverflow.com/a/3710506/218196)). Таким образом, * делает * действительным ваш фактический вопрос? –

+1

Возможный дубликат [Как проверить, является ли строка допустимой строкой JSON в JavaScript без использования Try/Catch] (http://stackoverflow.com/questions/3710204/how-to-check-if-a-string-is -a-valid-json-string-in-javascript-without-use-try) –

+0

@loanburger Возможно, но мне нужен способ сделать его действительным. – Duster

ответ

0

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

{"foo":"bar 

может стать

{"stringified":"{\"foo\":\"bar"} 

и совершенно справедлива, но она также может стать

{"foo":"bar"} 

или

{"foo":"barcelona"} 

Я хотел бы предложить с другой посмотрите на свой домен или заданной в вопросе.

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