我想用json + php作为我的数据。我阅读了更多文档来执行此操作,基本功能是json_decode()和json_encode()。我的问题是,阅读更多文档并阅读不同的结构示例在我身上产生了很多疑问。
我想创建一个这样的结构,从基础开始到容器:
我心中的结构是这样的......
[ //The start of Commands
//Can make a property name here like "name":"puls1"
[ //Operation1
{ //Base1
"id":"22398",
"value":"255"
},
{ //Base2
"id":"22657",
"value":"80",
},
{ //Base3
"id":"7928",
"valore":"15"
}
],
[ //Operation2
{ //Base1
"id":"22398",
"value":"0"
},
{ //Base2
"id":"22657",
"value":"0",
},
{ //Base3
"id":"7928",
"valore":"0"
}
],
] //The close of Commands
但是我已经把[和{以不正确的顺序认为...... 我怎样才能制作出像这样的json结构?设置命令后插入新操作或删除操作?
感谢所有..
//回答我做了这个代码
class Base
{
var $i;
var $value;
function __construct($i,$v)
{
$this->id = $i;
$this->value = $v;
}
}
$a = new Base('1','11');
$b = new Base('2','10');
$c = new Base ('3','20');
$d = new Base ('4','30');
class Operation
{
var $name;
var $values = Array();
function __construct($a)
{
$this->name = $a;
}
public function addArray($a)
{
array_push($this->values,$a);
}
}
$oper1 = new Operation("op1");
$oper1->addArray($a);
$oper1->addArray($b);
$oper2= new Operation("op2");
$oper2->addArray($c);
$oper2->addArray($d);
$commands = Array($oper1,$oper2);
echo json_encode($tot);
现在的问题是如何进行还原操作?这样使用json_decode并将其封装在适当的结构中?
答案 0 :(得分:4)
json列表类型[]
等于php中没有键的数组。
json字典类型{}
等于php中的键控数组。
你想要的是这样的:
$json = array(
array(
array('id' => $num, 'value' => $val), // Base 1
array('id' => $num_1, 'value' => $val_1), // Base 3
array('id' => $num_2, 'value' => $val_2), // Base 2
),
array(...),
array(...),
);
答案 1 :(得分:2)
如果您正在使用PHP,我将从本机PHP类构建对象(json_encode也可以与php对象一起使用):
class Base {
var $id;
var $value;
}
然后,只需将这些对象放在各种数组中,您也可以使用addToOperation($baseObj)
和addToCommands($operationObj)
等方法进行抽象。
您正在处理本机数据结构(Arrays),因此您可以使用本机方法删除(array_pop)和添加(array_push)数据。
答案 2 :(得分:1)
这样的事情应该有效
// Build up your data as a mulitdimensional array
$data = array(
'operations' => array(
0 => array(
'bases' => array (
0 => array(
'id' => '22398',
'value' => 'whatever'
),
1 => array(
'id' => 'id goes here',
'value' => 'value goes here'
),
1 => array(
//data for operation 2
)
);
// Then use json_encode
$json = json_encode($data);
我的语法可能不完美但是应该给你这个想法。要访问它,您将使用像
这样的代码 $operations = json_decode($data);
foreach ($operations as $op) {
foreach ($op->bases as $base) {
//Logic goes here
}
}
希望这有帮助。