我想从json获取特定值,但我无法让它工作。 这是我的保存格式,这些是来自输入字段的值。
$.ajax({
type: "POST",
url: "speichern.php",
dataType: 'json',
data: {
"Produkt": {
"Produktkategorie": Produktkategorie,
"Optionen": {
"MaxBreite": MaxBreite,
"MaxHoehe": MaxHoehe,
"MinBreite": MinBreite,
"MinHoehe": MinHoehe,
"ProduktStaerke": ProduktStaerke,
"KantenAuswahl": KantenAuswahl, },
"Formen": {
"FormRund": FormRund,
"FormEllipse": FormEllipse,
"FormHexagon": FormHexagon,
"FormSchnittlinks": FormSchnittlinks,
"FormRechtQuad": FormRechtQuad,
}
}
},
}).done(function( msg ) {
console.log( msg );
});
这里它被保存到文件:
$neu = json_encode($_POST);
$file = file_get_contents('results.json');
$data = json_decode($file);
unset($file);
$data[] = $neu;
file_put_contents('results.json',json_encode($data));
unset($data);
现在我想分别回应这些价值观:
$string = file_get_contents("results.json");
$jsonObject = json_decode($string);
$jsonArray = json_decode($string, true);
echo $jsonObject->Produkt->Produktkategorie . " and " . `$jsonArray['Produkt']['MaxBreite'];`
但这只会引发我的错误:
对象:注意:尝试获取非对象的属性 对于数组:注意:未定义的索引:产品
这是完整的json文件:
["{\"Produkt\":{\"Produktkategorie\":\"TestArtikel\",\"Optionen\":{\"MaxBreite\":\"250\",\"MaxHoehe\":\"150\",\"MinBreite\":\"10\",\"MinHoehe\":\"5\",\"ProduktStaerke\":\"3\",\"KantenAuswahl\":\"Ecke\"},\"Formen\":{\"FormRund\":\"true\",\"FormEllipse\":\"true\",\"FormRechtQuad\":\"true\"}}}"]
你可以帮我吗?
答案 0 :(得分:1)
发布数据时,可能需要设置数据类型 dataType:'json'
$.ajax({
url: 'speichern.php',
type: 'post',
dataType: 'json',
success: function (data) {
},
data: {data:jsondata}
});
在你的php文件中,你可以得到如下的json数据。
$json=json_decode(stripslashes($_POST['data']), true);
希望它对你有所帮助。
答案 1 :(得分:0)
只需用
替换最后一行echo $jsonObject->Produkt->Produktkategorie . " and " . `$jsonArray['Produkt']['Optionen']['MaxBreite'];
答案 2 :(得分:0)
你需要解码json两次,因为你在文件中的方式。试试这个:
$json = file_get_contents('results.json');
$json = json_decode($json, true);
$json = json_decode($json[0], true);
echo $json['Produkt']['Produktkategorie'];