JSON解码数组并在DB中插入

时间:2015-10-07 17:52:42

标签: php json

我有一个解码的Json对象发送到php文件的问题。我尝试了一些不同的格式

{"2":"{Costo=13, ID=9, Durata_m=25, Descrizione=Servizio 9}","1":"{Costo=7, ID=8, Durata_m=20, Descrizione=Servizio 8}"}

或者这个。

[{"Costo":"7.5","ID":"3","Durata_m":"30","Descrizione":"Barba Rasoio"},{"Costo":"4.5","ID":"4","Durata_m":"20","Descrizione":"Barba Macchinetta"}]

为了第一个,任何建议对我有帮助,然后我使用GSON转换了以前的字符串,但php不解码。

这是我的php:

//Receive JSON
 $JSON_Android = $_POST["JSON"];
//Decode Json
$data = json_decode($JSON_Android, true);
foreach ($data['servizi'] as $key => $value) 
    { echo "Key: $key; Value: $value<br />\n";
 }

如何访问数组的单个元素?我做错了什么?提前致谢

2 个答案:

答案 0 :(得分:1)

我认为你应该以这种方式检查内容

//Receive JSON
$JSON_Android = $_POST["JSON"];
//Decode Json
$data = json_decode($JSON_Android, true);
foreach ($data as $key => $value) { 
    echo "FROM PHP:  " . $value;

    echo "Test : " .$value['ID'];

}

答案 1 :(得分:0)

你的元素{Costo = 7,ID = 8,Durata_m = 20,Descrizione = Servizio 8}

未正确格式化为数组元素。这是一个纯字符串而不是数组值。

这是一个json对象,其中包含1个数组元素:

{
  "1": {
    "Costo": 7,
    "ID": 8,
    "Durata_m": 20
  }
}

Inside是json对象。因此,您的json字符串未正确格式化以使用该逻辑。你所拥有的是一个字符串的元素。这就是为什么它是一个有效的json(传递jsonlint)但不是你想要使用的正确的原因。

<强>更新 因为这种格式是修复的,所以我有一种不优雅的方式:

//Receive JSON
$JSON_Android = $_POST["JSON"];
//Decode Json
$data = json_decode($JSON_Android, true);
foreach ($data as $key => $value) { 
    //to separate each element
    $newArray = explode(',',$value);
    $newItem = explode('=', $newArray[1]);
    echo "ID". $newItem[1];
}

如果数据的放置是固定的,这将是一种肮脏的方式。 (即第一次爆炸的第二个元素始终是ID。

我会把它留给其他人来改善建议的代码。我建议更多,以确保您收到的json是正确的,因为正如我所解释的,它是错误的格式化,作为API开发人员,您希望任何给定客户端的自适应方式有效地使用数据。