2013-11-16 2 views
0

Я пытаюсь заменить \»с нулевым или каким-то другим символом, и пытаюсь JSON синтаксический анализ, но его не происходит в Аль Ниже мой кодJavascript:. Заменить Бэкслэш и двойные кавычки с некоторыми другими полукоксом

var s = '{"total":2,"data":[{"assignExist":"Online","status":"Started Work","state":"Ready for Download","assignInfoletId":"100003","loadAssignId":"false","assignAdditionalInfo":[{}],"assignName":"BC Simple Form","assignId":"100003","assignProcessId":"3"},{"assignExist":"Online","status":"Started Work","state":"Ready for Download","assignInfoletId":"100003","loadAssignId":"false","assignAdditionalInfo":[{"Name":"Rishant","City":"Bangalore","Desc":"Platform-Dev","AUDIT_COMPANIES":"[{\"AUDIT_COMPANY\":\"Golder\",\"AUDITORS\":[{\"TPA_AUDITOR\":\"Swadhin Ray\",\"IS_LEAD\":\"0\",\"ASSIGNMENTS\":\"Assigmens, Sdsfds,sdfdsfd\"},{\"TPA_AUDITOR\":\"Praveen Kayetha\",\"IS_LEAD\":\"1\",\"ASSIGNMENTS\":\"Assigmens, Sdsfds,sdfdsfd\"}]}]"}],"assignName":"BC Simple Form","assignId":"100001","assignProcessId":"2"}]}'; 


s= s.replace(/\\"/g, "DOUBLEQ"); 

console.log(s); 
var data = JSON.parse(s); 
console.log(data); 
.

решение этой проблемы я нашел это

var dataResponse = JSON.parse(s); 

     var dataLen = dataResponse.data.length; 

     for(var i=0;i<dataLen;i++){ 
     var audit_co = dataResponse.data[i].assignAdditionalInfo[0].AUDIT_COMPANIES; 
     if(typeof audit_co!= 'undefined') 
      dataResponse.data[i].assignAdditionalInfo[0].AUDIT_COMPANIES = JSON.parse(audit_co.replace(/\\"/g,'"')); 
     } 
+3

Почему у вас есть незаконный JSON? Легкое решение, несомненно, было бы просто для создания действительного JSON. – lonesomeday

+0

@lonesomeday Строка JSON в образце OP действительна. – Tomalak

+1

@Tomalak Нечетный, это вызывает у меня ошибку. Дело остается, однако, что решение недействительного JSON не предназначено для исправления его с помощью Javascript, а для создания в действительности JSON. – lonesomeday

ответ

1

Я не думаю, что это незаконно JSON. - это выглядит как JSON внутри JSON, который действует Попробуйте просто разбор его, не изменяя его

0

при создании.'s', то \ "уже используется, поэтому \ char исчезает. Вот почему вы не можете заменить \»с чем-то, потому что его не существует

1

Вам не нужно разобрать его недопустимого JSON.:
Вы можете получить доступ к значениям непосредственно:

<script> 
    var s = {"total":2,"data":[{"assignExist":"Online","status":"Started Work","state":"Ready for Download","assignInfoletId":"100003","loadAssignId":"false","assignAdditionalInfo":[{}],"assignName":"BC Simple Form","assignId":"100003","assignProcessId":"3"},{"assignExist":"Online","status":"Started Work","state":"Ready for Download","assignInfoletId":"100003","loadAssignId":"false","assignAdditionalInfo":[{"Name":"Rishant","City":"Bangalore","Desc":"Platform-Dev","AUDIT_COMPANIES":"[{\"AUDIT_COMPANY\":\"Golder\",\"AUDITORS\":[{\"TPA_AUDITOR\":\"Swadhin Ray\",\"IS_LEAD\":\"0\",\"ASSIGNMENTS\":\"Assigmens, Sdsfds,sdfdsfd\"},{\"TPA_AUDITOR\":\"Praveen Kayetha\",\"IS_LEAD\":\"1\",\"ASSIGNMENTS\":\"Assigmens, Sdsfds,sdfdsfd\"}]}]"}],"assignName":"BC Simple Form","assignId":"100001","assignProcessId":"2"}]}; 
    console.log(s.data); 
</script> 
+0

's' является объектом вашего кода, а не строкой. Этот ответ не имеет ничего общего с JSON. – Tomalak

+0

@ Tomalak Что вы можете объяснить JSON? –

+0

JSON - это строковый формат. Он не имеет ничего общего с объектами JavaScript, которые вы используете в своем коде. Добавьте одинарные кавычки вокруг своих 's', как и OP, и затем повторите свой ответ. Вы обнаружите, что он больше не работает. – Tomalak

1

В настоящее время у вас есть это :

var s = '{"plainValue": 42, "nestedJSON": "{\"nested\": \"json\"}"}'; 

Это не действует, поскольку она приводит к следующему в памяти строки:

 
{"plainValue": 42, "nestedJSON": "{"nested": "json"}"} 
           ^ ^^ ^ invalid double quotes 

Решение прост: не используйте вложенный JSON. Существует нет причин, чтобы вставить строку JSON в строку JSON. Вот что вы должны иметь.

var s = '{"plainValue": 42, "nestedObject": {"nested": "object"}}'; 

Синтаксически в силе, но глупо было бы

var s = '{"plainValue": 42, "nestedJSON": "{\\"nested\\": \\"json\\"}"}'; 

Устранить проблему в источнике. Функция, которая генерирует вашу строку JSON, не работает.

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