0

I'm trying to post an array that has been json encoded.

On a JSON string of

{"name":"q_4","label":"Are you ...","description":"Are you ...","groupName":"Questionnaire","type":"enumeration","fieldType":"select","formField":true,"options":["Male","Female"]}

i receive the error

Invalid input JSON on line 1, column 163: Can not instantiate value of type [simple type, class com.hubspot.inbounddb.properties.views.OptionView] from String value ('Male'); no single-String constructor/factory method

The json string comes as passed when tested on json lint.

I use the below code to post my json.

$jsonData = json_encode($jdata);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $createType);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($jsonData))
);
$result = curl_exec($ch);
Ela Buwa
  • 1,652
  • 3
  • 22
  • 43
  • seems like URL not accepting json data, try to pass original array instead of json data and see it works or not? – Alive to die - Anant Jun 10 '19 at 13:05
  • You may need to contact the devs of whatever site you're trying to post to. It doesn't like what you're passing in for the Options. – aynber Jun 10 '19 at 13:15

1 Answers1

0

You must pass the options as an array of object with the label and value like this:

"options": [
    {
        label: "Male",
        value: "male"
    },
    {
        label: "Female",
        value: "female"
    }
]

You can have a look at the example here for an enumeration field (checkbox): https://developers.hubspot.com/docs/methods/contacts/v2/create_contacts_property

Chin Leung
  • 14,621
  • 3
  • 34
  • 58