【问题标题】:Create an object from a valid JSON array with php使用 php 从有效的 JSON 数组创建对象
【发布时间】:2014-01-07 11:12:16
【问题描述】:

我知道我的 JSON 是有效的,我想将所有 KEY 从数组中提取出来并将它们放入一个对象中。但是,我似乎可以访问一个对象键或值、整个数组或一个键值对。我还没有弄清楚如何解析出所有的键,或者数组中的所有值。

这是我尝试过的:

print_r($json_obj) 产生:

Array ( [0] => Array ( [0] => uploads/featured/doublewm-4097.jpg [1] => featured ) [1] => Array ( [0] => uploads/featured/moon-5469.jpg [1] => featured ) )

print_r($json_obj[0][1]) 产生:

featured

print_r($json_obj[1][0]) 产生:

uploads/featured/moon-5469.jpg

print_r($json_obj[1][1]) 产量:

featured

print_r($json_obj[0][0]) 产生:

uploads/featured/doublewm-4097.jpg

PHP 代码:

<?php
        $resultSet = '[["uploads/featured/doublewm-4097.jpg","featured"],
          ["uploads/featured/moon-5469.jpg","featured"]]';
        $json_obj = json_decode($resultSet);
        // print_r($json_obj);
        print_r($json_obj[0][1]);

?>

每个 JSONLint 的 JSON 验证

[
    [
        "uploads/featured/doublewm-4097.jpg",
        "featured"
    ],
    [
        "uploads/featured/moon-5469.jpg",
        "featured"
    ]
]

我想最终得到一个包含 json_obj 中所有键的对象...即:

json_obj = array(
        'uploads/featured/moon-5469.jpg',
        'uploads/featured/doublewm-4097.jpg'
);

【问题讨论】:

  • 您的问题到底是什么? json_decode 正确解码给定的 JSON - 如果您想要不同的东西,您可以轻松地遍历数组并创建新结果。
  • 您的输入和预期输出是什么?说清楚。
  • 我的输入被硬编码到 resultSet= " ";我的预期输出是来自 JSON 的文件路径(键)数组......类似于 json_obj = array();最后的例子

标签: php arrays json


【解决方案1】:

如果你的输入总是相同的格式,你可以这样处理

$tmp = json_decode($resultSet);
$json_obj = array();
foreach ($tmp as $values) {
    array_push($json_obj, $values[0]);
}

这将为您提供所需格式的$json_obj,并带有您提供的硬编码$resultSet

【讨论】:

    【解决方案2】:

    也许这就是你要找的东西:

    json 编码服务器端,如:

     echo json_encode($html);
    

    json 解析客户端喜欢

     var str = JSON.parse(data);
     alert (JSON.stringify(str))
    

    【讨论】:

    • 不完全是,我传递给脚本的 json 已经通过 ajax 编码。出于本文的目的,我硬编码了我的 javascript 将传递给 php 脚本(在其他地方工作)的内容。因为我知道我的脚本正在传递什么,所以我觉得硬编码这些值是安全的。我只是想从每个 json 对象中访问键并构建一个对象,以便以后可以使用它。
    【解决方案3】:

    我设法像这样修复它:

    将json对象改成这种格式

    data = { gallery: gallery_name, 
               files: [
                         // imagefile,imagefile,imagefile...
                       ] 
            };
    

    而使用下面的php

        $resultSet = json_decode($_GET['submittedResults'], true);
        $gallery = $resultSet['gallery'];
        $files_to_zip = $resultSet['files']; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 2018-11-08
      • 2017-09-27
      相关资源
      最近更新 更多