我从DB中提取包含JSON内容的行,如下所示:
<?php
//get the data from the database
global $wpdb;
$current_user = wp_get_current_user();
$username = $current_user->user_login;
$rowResults = $wpdb->get_results( "SELECT username, myJson FROM jsonData WHERE username = \'$username\'" );
?>
然后我尝试将JSON解构回javascript对象:
<?php echo $i ?>
<?php echo $result->username; ?>
<script>
let itemFromDB = <?php echo $result->myJson; ?>;
let parsedItem = JSON.parse(itemFromDB);
doSomething(parsedItem); //use the js object
</script>
<?php $i++ ?>
<br>
<?php } ?>
问题是itemFromDB将包含一个到处都有转义字符的字符串,如下所示:
{\\"someData\\":\\"qwe\\",\\"moreData\\":\\"2\\",\\"tags\\":\\"dffdf\\",\\"evenMore\\":\\"30\\",\\"anotherOne\\":\\"1\\",\\"moreandmore\\":[{\\"something\\":\\"w\\",\\"amount\\":\\"1};
我试着写:
let itemFromDB = <?php echo json_decode($result->myJson); ?>;
但这只会导致一个空字符串。
如何删除转义字符并将查询结果转换为javascript对象?
最合适的回答,由SO网友:Worduoso 整理而成
您可能需要对JSON字符串进行解码,以便在JS代码中使用
let parsedItem = <?php echo stripslashes($result->myJson); ?>;
注意,您将获得JSON对象,因此无需调用JSON。在那里进行分析。我添加了stripslashes以从数据库加载的json字符串中删除额外的\\”。