从从数据库中提取的JSON字符串中删除转义字符

时间:2020-04-22 作者:Antti

我从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对象?

1 个回复
最合适的回答,由SO网友:Worduoso 整理而成

您可能需要对JSON字符串进行解码,以便在JS代码中使用

let parsedItem = <?php echo stripslashes($result->myJson); ?>;
注意,您将获得JSON对象,因此无需调用JSON。在那里进行分析。我添加了stripslashes以从数据库加载的json字符串中删除额外的\\”。

相关推荐

如何使用jQuery在默认情况下启用Read More

我有一个question and answer 并使用自定义wordpress主题,该主题具有启用read more 使用jquery链接。当我点击阅读更多链接时,它会扩展文章的全部内容,而不会打开文章。我想知道是否有可能在默认情况下扩展帖子,而无需单击红色更多链接。你能帮我做到这一点吗。