Как отправить массив объектов в теле запроса в формате JSON через почтальона? - PullRequest
1 голос
/ 28 апреля 2019

Я хочу проверить свою функцию API, отправив массив объектов через почтальона. Когда я отправляю свой запрос в формате JSON функции, а затем перебираю массив для доступа к каждому свойству объекта, он выдает мне следующую ошибку: https://i.imgur.com/QV9MDsm.jpg

Вот мой запрос: https://i.imgur.com/4584wf3.jpg

Я искал, как отправить массив объектов, используя почтальон, и обнаружил, что я делаю это правильно, выбрав строку в разделе тела, чтобы я мог добавитьмое тело запроса и выбрало его формат как JSON и добавило «Content-Type: application / json» в заголовок запроса

Моя функция API:

public function createRetailer(Request $request){
    $machines = $request->machineInfo;

    foreach($machines as $machine){
        $newMachine = new Machine;
        $newMachine->machine_no = $machine->machineNo;
        $newMachine->account_type = $machine->accountType;
        $newMachine->machine_type = $machine->machineType;
        $newMachine->retialer_id = $retailer->retailerId;
        $newMachine->save();
    }
}

Я ожидаю, что я могу получить доступ к каждомуСвойства объекта массива как объект PHP, но я обнаружил, что это не объект, протестировав его с помощью функции is_object ():

public function createRetailer(Request $request){
    $machines = $request->machineInfo;

    foreach($machines as $machine){
        return response()->json(is_object($machine));
    }
}

Я не знаю, есть ли проблема в моем запросе или что-то, что я мог бынеправильно понять при получении данных запроса в моей функции контроллера

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

Либо это массив, и в этом случае вы можете вызвать

$object = (object) $machine;

Или это строка, известная как JSON, вы можете вызвать

$object = json_decode($machine);

Или, если этоиспользование объекта / массива

$machine['machineType'];

Также, пожалуйста, добавьте дамп $ machine var

EDIT

Попробуйте отправить запрос, не используя [], потому что они будут преобразованы вмассив с объектами в нем, вместо этого, если вы удалите [] и имеете только {}, это должен быть только один объект в запросе

"machineInfo" : {
    "machineNo" : "1123213",
    "accountType" : "Paid",
    //...rest here..
}

Попробуйте это:

 public function createRetailer(Request $request){
    $machines = $request->machineInfo;

    foreach($machines as $machine){
        $object = (object) $machine;
        return response()->json(is_object($object));
    }
}
0 голосов
/ 29 апреля 2019

Поскольку ваш запрос отправляет данные в виде массива, вы можете получить доступ к элементам следующим образом:

public function createRetailer(Request $request){
    $machines = $request->machineInfo;

    foreach($machines as $machine){
        $newMachine = new Machine;
        $newMachine->machine_no = $machine['machineNo'];
        $newMachine->account_type = $machine['accountType'];
        $newMachine->machine_type = $machine->['machineType'];
        $newMachine->retialer_id = $retailer->['retailerId'];
        $newMachine->save();
    }
}
...