如何线性化 JSON 并使其成为初始数组的一部分

雷尼尔PM

我有一个如下所示的数组:

array(
    'session_id'      => 'ea29e7ae5c976794896b4c256f455dd5',
    'user_identifier' => "{'user_id':87,'username':'some username','email':'someuseremail.com','first_name':'Some','last_name':'User','company':'Company'}",
    'request_uri'     => '/'
);

我想将其转换为以下内容:

array(
    'session_id'  => 'ea29e7ae5c976794896b4c256f455dd5',
    'user_id'     => 87,
    'username'    => 'some username',
    'email'       => 'someuseremail.com',
    'first_name'  => 'Some',
    'last_name'   => 'User',
    'company'     => 'Company',
    'request_uri' => '/'
);

这意味着我在user_identifierkey处解码 JSON,我正在制作初始数组的一部分,$original然后我正在删除user_identifierkey。

到目前为止,这是我所做的:

foreach ($original as $key => $log) {
    $original[$key] = (array) $log;
}

foreach ($original as $key => $log) {
    foreach($log as $k => $v) {
        if ($k === 'user_identifier') {
            $original['decoded'] = (array) json_decode($v);
        }
    }
}

这给了我一个这样的数组:

array(
    'session_id'  => 'ea29e7ae5c976794896b4c256f455dd5',
    'request_uri' => '/',
    'user_identifier' => "{'user_id':87,'username':'some username','email':'someuseremail.com','first_name':'Some','last_name':'User','company':'Company'}",
    'decoded' => array(
        'user_id'     => 87,
        'username'    => 'some username',
        'email'       => 'someuseremail.com',
        'first_name'  => 'Some',
        'last_name'   => 'User',
        'company'     => 'Company'
    )
);

正如您可能注意到的,这甚至不是我正在寻找的数组,我已经有一个foreach循环将初始结果转换为数组 - 它作为stdClass对象出现 - 然后是一个foreach用于解码 JSON的嵌套循环并尝试使其成为一部分的初始数组。

在这种情况下,我需要添加另一个循环来线性化数组。我担心的是这个数组只是一个例子,但我需要转换的数组很大。

有没有更好的方法来实现这一目标?

我正在使用 PHP 5.3.3

不要惊慌

我会这样做:

  1. 将原始 JSON 提取到数组中。(一定要设置第二个参数,json_decode这样你最终会得到一个数组而不是一个对象。)

    $identifier = json_decode($your_array['user_identifier'], true);
    
  2. 将提取的数组与原始数组合并。

    $your_array = array_merge($your_array, $identifier);
    
  3. 取消设置现在冗余的 JSON

    unset($your_array['user_identifier']);
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Visual Studio 2012中使JSON文件成为项目的一部分

C# 如何组合作为列表一部分的多个 JSON 数组?

如何仅解析JSON的一部分?

如何使用Span使其成为TextView Bold直到特殊字符的一部分?

如何传递String参数,使其成为类方法调用的一部分?

Android中ListView项内的按钮-如何使其成为onItemClickListener的一部分

如何使#if #endif成为宏的一部分

如何使文件数组成为.zip文件的一部分

如何将scipy与数组集成为函数的一部分

如何打印作为JSON一部分的字符串数组包含其他属性

如何获取JSON响应的一部分并将其转换为某些接口的数组?

如何仅反序列化json文档的一部分?

如何仅初始化字符数组的一部分?

如何保存断点,使其成为源代码管理已提交项目的一部分

我如何重写此foreach使其成为以前的Linq表达式的一部分?

Swift:如何在AVPlayerLayer的顶部添加图像/文本,使其成为视频的一部分?

在Java中初始化数组的一部分

Django序列化器输出作为JSON对象的一部分

Postgres如何将json的一部分(包括数组)提取到另一个JSON字段中?

如何使用ActiveRecord仅选择存储在Postgres中的json的一部分

如何仅打印 JSON 对象数据的一部分?

如何通过PHP在JSON添加@符号作为对象名的一部分

JSON Parse,如何获取第一部分未知的变量?

如何获得JSON的一部分,作为杰克逊使用纯文本

如何在json文件中查找和替换值的一部分

如何在python中分离json的一部分?

如何在 C# 中解析不完整的 JSON 的一部分

如何获取json对象的一部分的值

如何在javascript中更改json obj的一部分?