Обработка HTML-кода в JSON - PullRequest
       3

Обработка HTML-кода в JSON

1 голос
/ 06 августа 2011

Я пишу код, который будет использовать AJAX-запросы для получения некоторого HTML-кода с сервера для встраивания, но я не могу получить правильный формат JSON. Может кто-нибудь сказать мне, что я делаю не так?

{"response": 
 [
  {"code": "<div id=\”sponsors\” class=\”infoBox\” > <div class=\”title\”>THANK YOU 2011 SPONSORS!</div> <div class=\”section\”> <div class=\”party\”><a href=\”http://www.ChickRussell.com\”>Chick Russell Communications</a></div> <div class=\”cityState\”>Pasadena, California</div> <div class=\”description\”> Chick Russell Communications is a story-driven creative development company, not a design-driven company. It's one of our main distinguishing features. It doesn't matter how great it looks if it doesn't create the desired effect. <a href=\”/vendors/info/17280\”>more...</a> </div> <div class=\”web\”><a href=\”http://www.ChickRussell.com\”>www.ChickRussell.com</a></div> </div>  </div>"
  }
 ]
}

Когда я пытаюсь запустить JSON.parse() на нем, я получаю синтаксическую ошибку

Вот код, который я использую для чтения JSON:

<script language="JavaScript" type="text/javascript">
var newxhr = new XMLHttpRequest()

newxhr.onreadystatechange = getResponse

function getResponse(){
    if(newxhr.readyState == 4) {
        var response = newxhr.responseText;

        console.log(response)

        response = JSON.parse(response)

        newxhr.close;
    }
}

var url = "http://*.*.net/test.json";

newxhr.open("GET", url, true);
newxhr.send(null)
</script>

Ответы [ 3 ]

3 голосов
/ 06 августа 2011

и " - разные символы. Вам нужны прямые цитаты, а не вьющиеся. (Скажите вашему браузеру, чтобы увеличить масштаб, если вы не видите разницу… и не используйте редактор (например, многие текстовые процессоры), который автоматически преобразует в фигурные кавычки, используйте подходящий текстовый редактор (мне нравится ActiveState Komodo) ).


Старый ответ (до пересмотра JSON в вопросе):

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

Второе, что вы делаете неправильно, это HTML (плохо) ваши кавычки. Чтобы экранировать " внутри строки JSON, вы представляете его как \".

Третье (но может быть, вы приводите плохой пример) - использование массива для одного объекта.

Когда я пытаюсь запустить JSON.parse () на нем, я получаю синтаксическую ошибку

Несмотря на проблемы с ним, у вас есть допустимый JSON , так что этого не должно происходить. Похоже, вы сократили тестовый набор до такой степени, что проблема, с которой вы столкнулись, в нем не отображается.

1 голос
/ 06 августа 2011

Это двойные кавычки.Вы использовали »(Unicode: U + 8221) вместо« (Unicode: U + 34). Хотя они выглядят очень похоже, они представляют собой два разных символа.

Действительный код ниже действителен:

{
"response": [
    {
        "code": "<div id=\"sponsors\" class=\"infoBox\" > <div class=\"title\">THANK YOU 2011 SPONSORS!</div> <div class=\"section\"> <div class=\"party\"><a href=\"http://www.ChickRussell.com\">Chick Russell Communications</a></div> <div class=\"cityState\">Pasadena, California</div> <div class=\"description\"> Chick Russell Communications is a story-driven creative development company, not a design-driven company. It's one of our main distinguishing features. It doesn't matter how great it looks if it doesn't create the desired effect. <a href=\"/vendors/info/17280\">more...</a> </div> <div class=\"web\"><a href=\"http://www.ChickRussell.com\">www.ChickRussell.com</a></div> </div>  </div>"
    }
]
}

Вы всегда можете проверить свой код JSON с помощью http://jsonlint.com/ - это отличный инструмент.

0 голосов
/ 06 августа 2011

мне кажется, что это работает: http://jsfiddle.net/6PV4M/1/

однако я избежал одинарных кавычек.

var str = '{"response":[{"code": "<div id=\”sponsors\” class=\”infoBox\” > <div class=\”title\”>THANK YOU 2011 SPONSORS!</div> <div class=\”section\”> <div class=\”party\”><a href=\”http://www.ChickRussell.com\”>Chick Russell Communications</a></div> <div class=\”cityState\”>Pasadena, California</div> <div class=\”description\”> Chick Russell Communications is a story-driven creative development company, not a design-driven company. It\'s one of our main distinguishing features. It doesn\'t matter how great it looks if it doesn\'t create the desired effect. <a href=\”/vendors/info/17280\”>more...</a> </div> <div class=\”web\”><a href=\”http://www.ChickRussell.com\”>www.ChickRussell.com</a></div> </div>  </div>"} ]}';

var obj = JSON.decode(str);
alert(obj["response"][0]["code"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...