Heim  >  Artikel  >  Backend-Entwicklung  >  Die Verwendung von php_encode für ein PHP-Array und die anschließende Verwendung von JSON.parse zum Konvertieren in ein JS-Objekt führt zu einem Fehler (zuvor war einer der Werte im Array ein JSON-String).

Die Verwendung von php_encode für ein PHP-Array und die anschließende Verwendung von JSON.parse zum Konvertieren in ein JS-Objekt führt zu einem Fehler (zuvor war einer der Werte im Array ein JSON-String).

WBOY
WBOYOriginal
2016-12-01 00:56:461310Durchsuche

数组:

<code>
Array
(
    [0] => Array
        (
            [productid] => 2
            [cateid] => 4
            [title] => 衣
            [descr] => 吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖
            [num] => 197
            [price] => 888.00
            [cover] => 7xpizy.com1.z0.glb.clouddn.com/58087fa893aa7
            [pics] => {"58087faa67f8b":"7xpizy.com1.z0.glb.clouddn.com\/58087faa67f8b"}
            [issale] => 1
            [saleprice] => 799.00
            [ishot] => 1
            [istui] => 1
            [ison] => 1
            [createtime] => 0
        )

)</code>

json :

<code class="json">[{"productid":"2","cateid":"4","title":"\u8863","descr":"\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416","num":"197","price":"888.00","cover":"7xpizy.com1.z0.glb.clouddn.com\/58087fa893aa7","pics":"{\"58087faa67f8b\":\"7xpizy.com1.z0.glb.clouddn.com\\\/58087faa67f8b\"}","issale":"1","saleprice":"799.00","ishot":"1","istui":"0","ison":"1","createtime":"0"}]</code>

数组中的 pics 本来就是json了,然后 json_encode 后在js中 JSON.parse 会报错:

<code>Unexpected number in JSON at position 169</code>

回复内容:

数组:

<code>
Array
(
    [0] => Array
        (
            [productid] => 2
            [cateid] => 4
            [title] => 衣
            [descr] => 吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖
            [num] => 197
            [price] => 888.00
            [cover] => 7xpizy.com1.z0.glb.clouddn.com/58087fa893aa7
            [pics] => {"58087faa67f8b":"7xpizy.com1.z0.glb.clouddn.com\/58087faa67f8b"}
            [issale] => 1
            [saleprice] => 799.00
            [ishot] => 1
            [istui] => 1
            [ison] => 1
            [createtime] => 0
        )

)</code>

json :

<code class="json">[{"productid":"2","cateid":"4","title":"\u8863","descr":"\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416","num":"197","price":"888.00","cover":"7xpizy.com1.z0.glb.clouddn.com\/58087fa893aa7","pics":"{\"58087faa67f8b\":\"7xpizy.com1.z0.glb.clouddn.com\\\/58087faa67f8b\"}","issale":"1","saleprice":"799.00","ishot":"1","istui":"0","ison":"1","createtime":"0"}]</code>

数组中的 pics 本来就是json了,然后 json_encode 后在js中 JSON.parse 会报错:

<code>Unexpected number in JSON at position 169</code>

对原数组进行处理,json部分转成数组

<code>$arr = Array(Array
        ("productid" => 2,
            "cateid" => 4,
            "title" => "衣",
            "descr" => "吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖",
            "num" => 197,
            "price" => 888.00,
            "cover" => "7xpizy.com1.z0.glb.clouddn.com/58087fa893aa7",
            "pics" => '{"58087faa67f8b":"7xpizy.com1.z0.glb.clouddn.com\/58087faa67f8b"}',
            "issale" => 1,
            "saleprice" => 799.00,
            "ishot" => 1,
            "istui" => 1,
            "ison" => 1,
            "createtime" => 0
        )
    );

foreach($arr as $k=>$v){
    $arr[$k]['pics'] = array(json_decode($arr[$k]['pics'],true));
}
echo json_encode($arr);</code>
<code>[{"productid":2,"cateid":4,"title":"\u8863","descr":"\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416\u5416","num":197,"price":888,"cover":"7xpizy.com1.z0.glb.clouddn.com\/58087fa893aa7","pics":[{"58087faa67f8b":"7xpizy.com1.z0.glb.clouddn.com\/58087faa67f8b"}],"issale":1,"saleprice":799,"ishot":1,"istui":1,"ison":1,"createtime":0}]</code>

<code class="php">$arr = [[
        
            'productid' => 2,
            'cateid' => 4,
            'title' => '衣',
            'descr' => '吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖吖',
            'num' => 197,
            'price' => 888.00,
            'cover' => '7xpizy.com1.z0.glb.clouddn.com/58087fa893aa7',
            'pics' => '{"58087faa67f8b":"7xpizy.com1.z0.glb.clouddn.com\/58087faa67f8b"}',
            'issale' => 1,
            'saleprice' => 799.00,
            'ishot' => 1,
            'istui' => 1,
            'ison' => 1,
            'createtime' => 0,
        

]];

$arr[0]['pics'] = json_decode($arr[0]['pics'],true);

$json=json_encode($arr);

//以下为js 正常输出
var json='<?php echo $json;?>';
console.log(JSON.parse(json));</code>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn