1

I am making an iOS app with Alamofire as the HTTP Request handler, and in the iOS App, i want to send a JSON payload to a Laravel API server. More or less, the JSON structure looks like this:

{
    "test_data": "Any data is here",
    "another_data": "Another data is here"
}

Now, in my Laravel project, I've been implementing a validation rule, basically to validate that those 2 params in the JSON is required and in a type of String. Here's my code to implement the validator:

$validator = Validator::make($request->all(), [
    'test_data' => 'required|string',
    'another_data' => 'required|string'
]);

if ($validator->fails()) {
    return redirect()->route('dataNotComplete');
}

The confusion is that this works, but it only works in order. Hence, if the JSON structure becomes flipped like this:

{
    "another_data": "Another data is here",
    "test_data": "Any data is here"
}

Validator will fails the test, even though the data is technically correct. How do I make the validator doesn't care about data ordering, or do another library exist for validating JSON specifically? I just want to validate the data of each params, not including the order of the data on the JSON Payload. Any thoughts or idea will be appreciated! Thank you!

P.S. I read from here that JSON order of parameters shouldn't matter, so that's that.

Nix
  • 13
  • 4
  • I don't think the order has an effect. I'm gonna guess that ```$request->all()``` is not an array. If it's not an array just convert it and it should work as expected. – Robert Nov 09 '22 at 13:02
  • Order doesn't make a difference at all. You can try `Log::info($request->all());` and check the log in `/storage/logs` to see what Request contains. It should be an array. You can also try `Log::info($validator->messages()->all());` to see what the errors are – aynber Nov 09 '22 at 13:04
  • https://stackoverflow.com/questions/44001030/laravel-validate-json-object – Robert Nov 09 '22 at 13:05

0 Answers0