【问题标题】:PHP : Convert php dictionary data set to key:valu pairPHP:将 php 字典数据集转换为键:值对
【发布时间】:2018-12-14 06:40:28
【问题描述】:

我有数据集 smiller 到字典,我想获取此数据的键值对。 这是数据集:

$data = "{u'test_field2': u'NONE', u'test_field3': u'NONE', u'test_account': u'NONE', u'test_account_1': u'NONE'}"

我正在做json_decode($data, true);,但运气不好

对不起,如果我不清楚。f

顺便说一句,我是用 PHP 做的

结果应该是这样的:

test_field2: NONE
test_field3: NONE

【问题讨论】:

  • 无效的 JSON...
  • 恐怕那行不通,因为该字符串不是有效的 JSON
  • 你从哪里得到那个字符串?
  • 我正在从数据库中获取这些数据。并且有基于django框架的整个后端过程,可以操作并将数据保存到数据库
  • Django 代码似乎被破坏了。我会先看看它,而不是尝试用 PHP 解决它。

标签: php json codeigniter key-value


【解决方案1】:

您必须尝试这样,因为在您现有的代码中存在几个问题。

  1. '替换不必要的字符u'
  2. 替换 json 字符串上的单引号 (')。对于 json,允许使用双引号 (")。

所以只需搜索这两个字符并分别替换为''"

<?php
$data = "{u'test_field2': u'NONE', u'test_field3': u'NONE', u'test_account': u'NONE', u'test_account_1': u'NONE'}";
$search = ["u'","'"];
$replace = ["'",'"'];
$without_u = str_replace($search,$replace,$data);
$array  = json_decode($without_u, true);
print '<pre>';
print_r($array);
print '</pre>';
?>

演示: https://eval.in/1032316

【讨论】:

  • 这可能会使 JSON 有效,但剥离所有的你是个坏主意
  • @Devon 是的,你是 ri8,这是我的错。立即查看编辑 :)
  • 如果任何值以u 结尾会发生什么?
【解决方案2】:

由于您的数据是无效的 json,因为其中的 u 是一个解决方案

 json_decode(str_replace("'",'"',str_replace("u'","'",$data)), true);

应该做的伎俩

【讨论】:

  • 治标不治本
  • 我测试过但仍然给出空值
  • 因为 JSON 需要双引号,而不是单引号
  • 更新以反映单引号到双引号
  • 可能,我只是对上面列出的数据提供一个答案,而不是一个完整的解决方案供他在 100% 的情况下使用。该数据中包含u 的事实非常可疑,我怀疑将来任何类型的str_replace 都会被破坏
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
相关资源
最近更新 更多