如何将数据从json保存到代码点火器?

时间:2016-09-23 12:40:02

标签: json codeigniter

我有两条记录

num | choice | name
--------------------
1   | A      | Jen
2   | C      | Jhon
---------------------

我的结果json如下所示

"{"1":"A, Jen","2":"C, Jhon"}"

如何从json中创建在Codeigniter中保存数据?

谢谢

3 个答案:

答案 0 :(得分:3)

使用json_decode()将其设置为数组以进行保存。

例如,要将json保存在数据库中,请使用:

$data_array = json_decode($json_data, true); // the "true" parameter makes it an associative array instead of object
// possible data modeling here...
$this->db->insert('table_name', $data_array);

当然你可能想要为db insert循环数组,如:

$data_array = json_decode($json_data, true);
foreach ($data_array as $data_row):
   // possible data modeling here...
   $this->db->insert('table_name', $data_row);
endforeach;

请参阅此处的参考http://php.net/manual/en/function.json-decode.php

答案 1 :(得分:0)

由于Mysql 5.7有原生JSON存储支持,如果你没有MySQL 5.7,你总是可以使用longtext字段,然后当你想将它转换回数组时你可以做json_decode($ result)/对象

首先,如果这正是你的JSON,那么你做错了,这是一个无效的JSON字符串。

确保为你的json使用一些验证器,这里有一些例子json:

$myJson = '{
    "employees": [{
        "firstName": "John",
        "lastName": "Doe"
    }, {
        "firstName": "Anna",
        "lastName": "Smith"
    }, {
        "firstName": "Peter",
        "lastName": "Jones"
    }]
}';

示例:

$this->db->insert($this->table, ['json_field' => $myJson]);

要阅读它,你可以这样做:

$result = $this->db->select('json_field')->from($this->table)->result_row();
$backToArray = (array) json_decode($result);

我做CodeIgniter已经有一段时间了,所以我不完全确定它是完全正确的,但它应该让你大致了解如何做到这一点。

答案 2 :(得分:0)

你可以在表中保存json,或者你可以使用json_decode()来保存单独的列。

控制器中的

A(:,c) = logical(A(:,c);

和模型

A(:,c) = A(:,c)~=0;