-1

我有以下错误

Notice:  Trying to get property of non-object in action.php

虽然发布的 json 已验证(通过 jsonLint.com 验证)。

这是我的json字符串:

[
{
    "eTGid": "1",
    "eTid": "34",
    "evrakGelisTarihi": "12/12/2013",
    "evrakKonu": "Sertifika denemesi",
    "evrakKurumID": "1047",
    "evrakCikisTarihi": "13/12/2013",
    "evrakCikisSayisi": "313213213213",
    "aciklamaBolumu": "açıklayıcı notlar",
    "gelenEvrakTarihi": "30/12/2013",
    "gelenEvrakSayisi": "3132321",
    "gelenEvrakEtakipNo": "987654",
    "bagliIlaclar": "[\"0\",\"[{\\\"ilacID\\\":\\\"744\\\",\\\"ilacPN\\\":\\\"asdasd2132\\\",\\\"ilacSKT\\\":\\\"12/12/2013\\\"}]\"]",
    "bagliFirmalar": "[\"0\",\"[{\\\"firmaID\\\":\\\"1047\\\"}]\"]",
    "": "[\"0\",\"[{\\\"bankaID\\\":\\\"5\\\",\\\"makbuzNO\\\":\\\"asdasda\\\",\\\"makbuzTARIHI\\\":\\\"12/12/2013\\\",\\\"ihracaatYapilacakUlkeID\\\":\\\"2\\\",\\\"ilacIhracADI\\\":\\\"ABFADER\\\",\\\"makbuzTUTAR\\\":\\\"202,06\\\",\\\"makbuzTipDetayDEGERİ\\\":\\\"10\\\"}]\",\"[{\\\"bankaID\\\":\\\"5\\\",\\\"makbuzNO\\\":\\\"ASDAWW\\\",\\\"makbuzTARIHI\\\":\\\"12/12/2013\\\",\\\"ihracaatYapilacakUlkeID\\\":\\\"191\\\",\\\"ilacIhracADI\\\":\\\"ABFADEX\\\",\\\"makbuzTUTAR\\\":\\\"202,06\\\",\\\"makbuzTipDetayDEGERİ\\\":\\\"9\\\"}]\"]",
    "bagliMakbuzlar": "[\"0\",\"987654»12/12/2013»3213213\"]",
    "kurumIcimi": "hayir"
}
]

我的php代码是:

$gelenJsonVerisi = $_POST['yeniEvrak'];
echo($gelenJsonVerisi);
$yeniEvrakObj = json_decode($gelenJsonVerisi);

exit($yeniEvrakObj->{'eTGid'});

我哪里做错了?

建议后:

  1. 我的 Json 字符串已作为数组(在括号之间)到达服务器端 (php)。
  2. 数组只有一个元素(成员),它是我们的 json 字符串(对象)
  3. 处理数组的第一个元素并将其分配给 php 对象并处理它。

    $gelenJsonVerisi = $_POST['yeniEvrak'];
    $yeniEvrakObjArray = json_decode($gelenJsonVerisi,TRUE);
    $yeniEvrakObj = $yeniEvrakObjArray[0];
    exit($yeniEvrakObj['eTGid']); // one of sample value
    

    谢谢

4

4 回答 4

2
$gelenJsonVerisi = $_POST['yeniEvrak'];
echo($gelenJsonVerisi);
$yeniEvrakObj = json_decode($gelenJsonVerisi);
exit($yeniEvrakObj[0]->eTGid);
于 2013-07-18T08:15:10.897 回答
2

它不是json_decode抛出错误,而是当您尝试访问结果数组时。是的,没错,数组。您的 JSON 值是这样的:

[ { ... } ]
^  array  ^

所以你需要像这样访问结果:

$yeniEvrakObj[0]->eTGid
于 2013-07-18T08:23:29.753 回答
2

JSON 字符串显示一个包含单个对象的数组。像这样访问数据:

$yeniEvrakObj = json_decode($gelenJsonVerisi);
echo $yeniEvrakObj[0]->eTGid;

如果您确定该数组中只有 1 个对象,您可以尝试:

$yeniEvrakObj = json_decode(
                    substr($gelenJsonVerisi,1,-1)
);

它切断了前导括号和终止括号。这意味着没有尾随空格的前导,因此trim首先是字符串。

检查键盘。如您所见,该json_decode调用将数据作为包含对象的数组返回:

大批
(
    [0] => 标准类对象
        (
            [eTGid] => 1
            [eTid] => 34
            [evrakGelisTarihi] => 2013 年 12 月 12 日
            [evrakKonu] => Sertifika denemesi
            [evrakKurumID] => 1047
            [evrakCikisTarihi] => 13/12/2013
            [evrakCikisSayisi] => 313213213213
        )

)
于 2013-07-18T08:25:09.920 回答
-1

问题是您尝试访问解码对象的方式,因为它位于数组内部。您的代码应该是:

$gelenJsonVerisi = $_POST['yeniEvrak'];
echo($gelenJsonVerisi);
$yeniEvrakObj = json_decode($gelenJsonVerisi);

exit($yeniEvrakObj[0]->eTGid);

编辑:感谢您对此答案的评论,让我明白我错了

于 2013-07-18T08:16:03.573 回答