我的数据库中保存了一个json字符串。当我从db检索它以将其传递给javascript函数(ajax调用),以及该行的id时,我是json_encoding两者(查询结果数组)并将其传递给js。但是json_encode正在为我已经的json字符串添加不需要的斜杠。如何逃避它。记住我必须将id作为数组中的第二个元素传递。
我在db中的json字符串就像:
{"field":"City","term":"Hawaiian Gardens, CA"}
并且id是5。
所以PHP中的查询结果数组是:
$savedVal['id'] = 5
$savedVal['object_str'] = {"field":"City","term":"Hawaiian Gardens, CA"}
所以在json_encode($ savedVal)之后理想情况下它应该是:
{"id":"5","object_str":{"field":"City","term":"Hawaiian Gardens, CA"}}
但json_encoding数组给了我:
{"id":"5","object_str":"{\"field\":\"City\",\"term\":\"Hawaiian Gardens, CA\"}}
在object_str值周围也有额外的斜杠和引号。 请帮帮我。
谢谢。
答案 0 :(得分:19)
您正在JSON上运行JSON_encode - 这就是双重转义的原因。试试这个:
$savedVal['id'] = 5 ;
$savedVal['object_str'] = json_decode( '{"field":"City","term":"Hawaiian Gardens, CA"}' );
echo json_encode( $savedVal );
输出
{"id":5,"object_str":{"field":"City","term":"Hawaiian Gardens, CA"}}