我有一个解码的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";
}
如何访问数组的单个元素?我做错了什么?提前致谢
答案 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开发人员,您希望任何给定客户端的自适应方式有效地使用数据。