我使用XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
parser.setInput(new BufferedReader(
new InputStreamReader(
new URL("http://.....").openConnection().getInputStream()
)
)
);
while(XmlPullParser.END_DOCUMENT != parser.next()){
if(XmlPullParser.START_TAG == parser.getEventType()){
String tagName = parser.getName();
if(parser.getAttributeCount() > 0 {
// parse attributes, if needed
}
if(parser.nextToken() == XmlPullParser.TEXT){
String tagValue = parser.getText()
}
// etc.
}
}
函数编码了一个数组,它给了我一个像这样的字符串..
json_encode()
你可以看到它包含像“\ n”这样的特殊字符..我希望这些特殊字符替换为"[{"details":"power - 2000w \nac-220-240v \/ 50-60hz\n369 degree cordless base\n","model_id":"MC-EK3428 \/ MC-EK3328"}]"
,因为在""
我使用的是javascript
函数将此字符串转换为对象..
但它给了我一个错误
JSON.parse();
我认为这是因为字符串中的特殊字符..我可以逃避这些吗?
修改
syntaxerror : missing ) after argument list
更新:
发现错误在此:
php :
$view->jsonencoded_array = json_encode($array);
javascript :
var products = JSON.parse('<?php echo $jsonencoded_array; ?>');//this line gives me the error
答案 0 :(得分:2)
这里的问题是\n
(和其他各种组合)在JavaScript字符串中具有特殊含义,并且您将JSON转储到JavaScript字符串中,而不对这些字符进行任何转换。
由于JSON受JavaScript文字语法的启发,因此您可以使用json_encode
将PHP字符串转换为JavaScript字符串。
有一些问题,主要问题是</script>
可以出现在JSON文本中而不会导致任何问题,但是在JavaScript <script>
元素的中间使用它会导致HTML解析器在字符串中间切断你的JavaScript ...但是PHP的默认编码规则将生成<\/script>
来解决这个问题。
所以:
<?php
$json_array = json_encode($array);
$javascript_string = $json_encode($json_array);
?>
var products = JSON.parse(<?php echo $javascript_string; ?>);
那就是说。 JSON数组也是一个JavaScript数组,因此您可以完全跳过该步骤。
<?php
$json_array = json_encode($array);
?>
var products = <?php echo $json_array; ?>;
答案 1 :(得分:1)
在JavaScript中进行解析时,您必须缺少某些内容或存在其他原因导致您的问题;因为json_encode处理\n
和其他特殊字符"
\
等非常好,并且在没有任何明确工作的情况下正确地逃避它们。
我建议你查看生成的JSON,然后提供给JavaScript,看看是否有遗漏。
注意:您可以执行str_replace但不建议这样做。因为它的标准功能更好地坚持json_encode
并且效果很好。
修改强>
您应该回显$view->jsonencoded_array
而不仅仅是$jsonencoded_array
,不需要解析已经存在的JSON对象。
php:
$view->jsonencoded_array = json_encode($array);
javascript:
var products = <?php echo $view->jsonencoded_array; ?>;
答案 2 :(得分:-1)
json_encode()两次帮助我解决了这个问题。
$view->jsonencoded = json_encode(json_encode($array));