0

我已经在 json 对象中编码了我需要的数据,但我想将 json 对象解码为 javscript 数组,我的 json 编码对象是:

{"product_id":"62","product_quantity":"65"}

但是我想在我的 java 脚本中使用这个 json 并希望它可用于 java 脚本数组

所以如果我这样做:

var arr = new Array()
arr = <?php json_decode('$json_object',TRUE); ?>;

但是,当我检查我的页面源时,我得到 null 即 arr = 我如何将转换为数组的 json 对象分配给 java 脚本数组?进一步如何从 java 脚本数组访问 json 对象?

4

3 回答 3

6

json_decode返回一个 PHP 数据结构。如果要将其序列化为 JavaScript 数据结构,则必须将其传递json_encode(然后实际上echo是它返回的字符串)。

请注意,json_encode输出的 JavaScript 数据结构可以安全地注入<script>HTML 文档中的元素。并非所有 JSON 都可以安全地执行此操作(PHP 添加了额外的转义序列,并将转换纯字符串、数字、空值等(它们本身不是合法的 JSON)。

请注意,arr如果您要立即将其他内容分配给arr.

另请注意,这'$json_object'将为您提供一个以字符开头的字符串$,然后是变量的名称。PHP 中的单引号字符串不会被插值。

var arr;
arr = <?php echo json_encode(json_decode($json_object,TRUE)); ?>;

另请注意,此 JSON:

{"product_id":"62","product_quantity":"65"}

将转换为 PHP关联数组或 JavaScript对象不是数组)。

所以给定这个PHP:

<?php
    $json_object = '{"product_id":"62","product_quantity":"65"}';
?>
<script>
    var arr;
    arr = <?php echo json_encode(json_decode($json_object,TRUE)); ?>;
    alert(arr.product_id);
</script>

你得到这个输出:

<script>
    var arr;
    arr = {"product_id":"62","product_quantity":"65"};
    alert(arr.product_id);
</script>

运行时会发出62警报。

于 2012-08-17T12:02:55.773 回答
0

您可以将 JSON 对象推送到 javascript 数组中并遍历数组,选择您需要的适当字段。修复..

    var json = {"product_id":"62","product_quantity":"65"}; 
    var array = new Array();
    array.push(json);   
    for(var i = 0; i < array.length; i++){
       console.log(array[i].product_id)
    }
于 2012-08-17T12:10:59.777 回答
0

好的,开始:

PHP 生成的 json 字符串可以在 Javascript 中作为 Object 使用。如果您将变量声明为以数组开头,则它可能会发生冲突。

无论如何这应该工作:

<?php 
$error_fields_structure = array(
     'product_id' => 4531
    ,'main_product_quantity' => 2
);

$json_object = json_encode($error_fields_structure);
?>

<html>
    <head>
        <script>
            var jsonstring = <?php echo (isset($json_object) ? $json_object : 'nothing here'); ?>

            for( var i in jsonstring ){
                alert( i +' == ' +jsonstring[i] );
            }
        </script>
    </head>

    <body>

    </body>
</html>
于 2012-08-17T12:11:24.717 回答