【问题标题】:what is the correct way to deserialize this data in php (Laravel)?在php(Laravel)中反序列化这些数据的正确方法是什么?
【发布时间】:2021-10-07 19:48:54
【问题描述】:
{"items":{
  "1":{
     "qty":1,
     "price":12.99,
     "item":{
        "id":1,
        "title":"Product 1 ",
        "delivery_time":"30",
        "description":"Product 1 Product 1 Product 1 Product 1",
        "created_at":"2021-06-21T11:43:00.000000Z",
        "updated_at":"2021-06-28T14:34:49.000000Z",
        "price":12.99
     }
  },
  "2":{
     "qty":1,
     "price":10,
     "item":{
        "id":2,
        "title":"random product",
        "delivery_time":"30",
        "description":"random product",
        "created_at":"2021-06-28T14:29:00.000000Z",
        "updated_at":"2021-06-28T14:34:35.000000Z",
        "price":10
     }
  }}}

我尝试使用 foreach (items as item) { item->qty(不工作)和 item['qty'](不工作)也尝试使用 JSON 编码和解码。

任何人都可以帮助正确的方法吗?

【问题讨论】:

  • 你能edit你的问题并将var_dump(json_decode($json));的输出添加到它吗?
  • 试试unserialize()方法。
  • 那是无效的 JSON。使其有效,然后json_decode() 它。

标签: php arrays json laravel


【解决方案1】:

您可以将其转换为 Array php 在你的 json 对象之前,你可以添加这个(数组)

【讨论】:

    【解决方案2】:

    有许多类型的序列化字符串。

    1.序列化(serialize() / unserialize())

    $array = array("Hello", "World", 100, 200);
    $str = serialize($array);
    
    # $str: a:4:{i:0;s:5:"Hello";i:1;s:5:"World";i:2;i:100;i:3;i:200;}
    
    $str = 'a:4:{i:0;s:5:"Hello";i:1;s:5:"World";i:2;i:100;i:3;i:200;}';
    $array = unserialize($str);
    
    # $array: ["Hello", "World", 100, 200]
    



    2.JSON (json_encode() / json_decode())

    $array = array('Hello World', 1234, 5678);
    $json_arr = json_encode($array);
    $json_obj = json_encode((Object)$array); // for objects
    
    # $json_arr: ["Hello World",1234,5678]
    # $json_obj: {"0":"Hello World","1":1234,"2":5678}
    
    $json = '{"0":"Hello World","1":1234,"2":5678}';
    $object = json_decode($json);
    
    # $object: 0 = 'Hello World' - 1 = 1234 - 2 = 5678
    

    【讨论】:

      【解决方案3】:

      请注意,“1”、“2”等是您进行迭代的关键。 print_r(item) 这就是最有可能得到的。使用另一个 foreach 循环,您可以访问 qty,以获取 item 中的内容,然后再次循环。以获取 delivery_time 为例。现在没有我的笔记本电脑,会有帮助的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-13
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多