代码之家  ›  专栏  ›  技术社区  ›  Nishant Jani

javascript中的Json解码

  •  0
  • Nishant Jani  · 技术社区  · 13 年前

    我已经在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对象?

    3 回复  |  直到 13 年前
        1
  •  6
  •   Quentin    13 年前

    json_decode 返回一个PHP数据结构。如果你想将其串行化为JavaScript数据结构,你必须通过 json_encode (然后实际上 echo 它返回的字符串)。

    请注意 json_encode(编码) 输出一个JavaScript数据结构,该数据结构可以安全地注入 <script> 元素。并不是所有的JSON都可以安全地使用(PHP添加了额外的转义序列,并将转换纯字符串、数字、null值等(这些本身就不是合法的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 运行时。

        2
  •  0
  •   user663381 user663381    13 年前

    您可以将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)
        }
    
        3
  •  0
  •   DonSeba    13 年前

    好的,开始吧:

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

    无论如何,这应该起作用:

    <?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>