# /crm/v3/objects/contacts/searchにてInvalid input JSON発生

**URL:** <https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054>\
**Category:** Tips, Tricks & Best Practices\
**Tags:** enterprise\
**Created:** [August 1, 2022, 4:42am UTC](https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054 "2022-08-01T04:42:37Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Anonymous\_e6035976def9121b487eb234f02ea450](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@Anonymous\_e6035976def9121b487eb234f02ea450](https://community.hubspot.com/u/Anonymous_e6035976def9121b487eb234f02ea450)\
**Post date:** [August 1, 2022, 4:42am UTC](https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054/1 "2022-08-01T04:42:37Z")

</div>

お世話になっております。

LIG吉田です。

英語サイトにおいても「Invalid input JSON」について記事の存在は確認しました。

しかし、PHPのコードについての記事については見つけられず。

ご助力をお願いしたいです。

ご質問内容は以下のスクショの通りで、PHPコードが通らないのはなぜか？になります。

 ![_0-1659328746733.png](https://d2qpr2jzcazej7.cloudfront.net/original/3X/f/8/f8a4e912ed33897a09450397d593fed23649abee.png)

よろしくお願いします。

---

<div class="post-metadata">

**Author:** ![KMurota](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/kmurota/32/61991_2.png) [@KMurota](https://community.hubspot.com/u/KMurota)\
**Post date:** [August 1, 2022, 4:50am UTC](https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054/2 "2022-08-01T04:50:40Z")

</div>

空配列の"values"=[]がフィルターに入ってしまっています。  
テスター、たまに入力していないパラメータが空で入り込んでしまいます。  
下記、成功SearchリクエストBodyの一例です。

```auto
 "filterGroups": [
 {
 "filters": [
 {
 "value": "true",
 "operator": "EQ",
 "propertyName": "support_service_subscribed_customer"
 }
 ]
 }
 ]

```

---

<div class="post-metadata">

**Author:** ![Anonymous\_e6035976def9121b487eb234f02ea450](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@Anonymous\_e6035976def9121b487eb234f02ea450](https://community.hubspot.com/u/Anonymous_e6035976def9121b487eb234f02ea450)\
**Post date:** [August 1, 2022, 9:22am UTC](https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054/3 "2022-08-01T09:22:44Z")

</div>

室田様

ご連絡ありがとうございます。

ご指摘箇所に問題があるのはわかりつつ・・・投稿した次第です。

> **[Accounts Dashboard | HubSpot](https://app.hubspot.com/myaccounts?next=developerdocs&redirect=%2Fapi-reference%2Fcrm-contacts-v3%2Fguide)**

上記のWebページでAPIを試せるのですが、「“values”=[] 」を、

同画面から消せないのはなぜだろう？というのが一つあります。

また上記ページ上で、「PHP」を選択し「Copy All」をし、

自Laravelプロジェクト内にペースト（use xxx等々調整しますが）後、

さらに「“values”=[] 」は取り除いた状態ですと、vscodeになりますが、

文法エラーが発生するようです。

`use HubSpot\Factory;use HubSpot\Client\Crm\Contacts\ApiException;。。。$client = Factory::createWithAccessToken("pat-na1-2bf25c1d-2f5d-4103-af29-xxxxxxxx");$PublicObjectSearchRequest = new PublicObjectSearchRequest(['filter_groups' => [{"filters":[{"value":"seiichi115@gmail.com","propertyName":"email","operator":"EQ"}]}], 'sorts' => ["email"], 'properties' => ["email"], 'limit' => 1, 'after' => 0]);try {$apiResponse = $client->crm()->contacts()->searchApi()->doSearch($PublicObjectSearchRequest);var_dump($apiResponse);} catch (ApiException $e) {echo "Exception when calling search_api->do_search: ", $e->getMessage();}`

エラーを次のように回避（ググった記事を参考にしました）

` $client = \HubSpot\Factory::createWithAccessToken("pat-na1-2bf25c1d-2f5d-4103-af29-9938eefa632c"); $filters = array( 'filters' => array( array( 'value' => 'seiichi115@gmail.com', 'propertyName' => 'email', 'operator' => 'EQ', ), ), ); $PublicObjectSearchRequest = new PublicObjectSearchRequest( ['filter_groups' => json_encode($filters), 'sorts' => ["email"], 'properties' => ["email"], 'limit' => 1 ] ); try { $apiResponse = $client->crm()->contacts()->searchApi()->doSearch($PublicObjectSearchRequest); var_dump($apiResponse); } catch (ApiException $e) { echo "Exception when calling search_api->do_search: ", $e->getMessage(); }`

上記コードを実行すると・・・

`Exception when calling search_api->do_search: [400] Client error: `POST [https://api.hubapi.com/crm/v3/objects/contacts/search`](https://api.hubapi.com/crm/v3/objects/contacts/search%60) resulted in a `400 Bad Request` response: {“status”:“error”,“message”:"Invalid input JSON on line 1, column 17: Cannot deserialize value of type `java.util.HashSe (truncated...)`

うーん・・・

という状態です。

json形式が良くないっぽいのですが、そもそもの「Copy All」コードが動かないのはなぜなのか？

という状態です。

何かアドバイスありましたら、よろしくお願いします。

---

<div class="post-metadata">

**Author:** ![assi](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/assi/32/25699_2.png) [@assi](https://community.hubspot.com/u/assi)\
**Post date:** [August 1, 2022, 10:30am UTC](https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054/4 "2022-08-01T10:30:51Z")

</div>

[@吉田成一](https://community.hubspot.com/t5/user/viewprofilepage/user-id/345451)

前提として、API ドキュメント内のAPIを実行できる箇所はあまり信用しない方が多いです。バグが多く、またAPI自体のアップデートに追いついていないことも多いので……。（現にまだ非公開アプリに対応できていません）

本題ですが、上記コメントの

\> エラーを次のように回避（ググった記事を参考にしました）

のコードを確認しました。ざっと見るに、sortの書き方が違うように思います。

一度削除してみるか、もしくは下記の形式で記述してみるといかがでしょうか？

```lia-code-sample
"sorts": [
 {
 "propertyName": "createdate",
 "direction": "DESCENDING"
 }
]

```

searchエンドポイントの書式については、下記のドキュメントページが詳しいです。

> **[Search the CRM - HubSpot docs](https://developers.hubspot.com/docs/api-reference/latest/crm/search-the-crm)**
>
> The CRM search endpoints make getting data more efficient by allowing developers to filter, sort, and search across any CRM object type.

余談ですが、私がAPIを試す際はドキュメントを見つつ、Postmanにてリクエストボディを書いてテストすることが多いです。使いこなせばかなり便利で、APIドキュメント上での実行よりもお勧めです。

---

<div class="post-metadata">

**Author:** ![KMurota](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/kmurota/32/61991_2.png) [@KMurota](https://community.hubspot.com/u/KMurota)\
**Post date:** [August 1, 2022, 12:00pm UTC](https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054/5 "2022-08-01T12:00:28Z")

</div>

@assi [@吉田成一](https://community.hubspot.com/t5/user/viewprofilepage/user-id/345451)

1. “sorts”:[“email”] でもリクエストは通ります(タイプミスがあっても通りますが)。デフォルトではASCENDINGなので、

`"direction"`

はDESCENDINGにしたい場合に利用するイメージだと思っています。

- すでにご覧になっていると思いますが、海外CommunityでもPHPライブラリのエラーが報告されていますね。PHPは全く知らないのですが、[]のCollectionとArrayの区別がライブラリがうまくつけられていないようです。解決策も結局「curlのwrapperを使った」というのが最終的なようです。  
[https://community.hubspot.com/t5/APIs-Integrations/Api-search-contact-by-email-in-php-invalid-json/td-p/496462](https://community.hubspot.com/t5/APIs-Integrations/Api-search-contact-by-email-in-php-invalid-json/td-p/496462)  
[https://community.hubspot.com/t5/APIs-Integrations/Problem-with-API-contacts-search-using-php-client-library/m-p/575002](https://community.hubspot.com/t5/APIs-Integrations/Problem-with-API-contacts-search-using-php-client-library/m-p/575002)  
コミュニティの報告にも関わらず放置されているところを見ると、ライブラリを諦めて、httpクライアントを使用した方がいい気がします。  
ちなみに、curlとPythonでは、「空プロパティが時々入り込む」という以外は今のところバグに当たったことはないので、JavaScriptとPythonの方が力が入っているのでしょうか？？と勘ぐってしまいます。

- もしSearchの値がテストでemailにしているだけでなく本当にemailなのであれば、V1で

- 余談ですが、VS Codeお使いであれば、 ~~Thunder Client~~ Rapid API Clientというaddonがいいですよ！  
- PostManのようにリクエストを設定でき、  
- PostManのWorkspace=\>新しいタブを開く=\>TEXT-\>Raw-\>JSONを選択  
というのが若干邪魔くさかったのが省略され  
- リクエストを各言語に変換できます。  
過去のリクエスト履歴も勝手に残していってくれるので再利用しやすいです。

---

<div class="post-metadata">

**Author:** ![Anonymous\_e6035976def9121b487eb234f02ea450](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@Anonymous\_e6035976def9121b487eb234f02ea450](https://community.hubspot.com/u/Anonymous_e6035976def9121b487eb234f02ea450)\
**Post date:** [August 2, 2022, 9:15am UTC](https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054/6 "2022-08-02T09:15:05Z")

</div>

皆様

色々と情報ありがとうございました。

curlを叩くようにしました・・・（いいのかな・・・）

` $url = 'https://api.hubapi.com/crm/v3/objects/contacts/search'; $headers = array(); $headers[] = 'Content-Type: application/json'; $headers[] = 'authorization: Bearer pat-na1-xxxxxxxx'; $payload = '{"filterGroups": [{"filters": [{"value": '; $payload .= '"' . $email . '"'; $payload .= ',"propertyName": "email","operator": "EQ"}]}],"properties": ["email"]}'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = json_decode(curl_exec($ch)); curl_close($ch);`

HubSpot大変だなぁ・・・

---

<div class="post-metadata">

**Author:** ![natsumimori](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/natsumimori/32/39807_2.png) [@natsumimori](https://community.hubspot.com/u/natsumimori)\
**Post date:** [August 3, 2022, 1:07am UTC](https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054/7 "2022-08-03T01:07:09Z")

</div>

@assiさん @KMurota さん

ナレッジシェアありがとうございます〜！私はAPIはさっぱりなので、、このようなナレッジをコミュニティーで共有いただけるの助かります＞＜

[@吉田成一](https://community.hubspot.com/t5/user/viewprofilepage/user-id/345451) さんもこちらの投稿ありがとうございます。このような開発関連のリソースが増えるのありがたいです！

---

<div class="post-metadata">

**Author:** ![Anonymous\_e6035976def9121b487eb234f02ea450](https://avatars.discourse-cdn.com/v4/letter/a/e95f7d/32.png) [@Anonymous\_e6035976def9121b487eb234f02ea450](https://community.hubspot.com/u/Anonymous_e6035976def9121b487eb234f02ea450)\
**Post date:** [August 3, 2022, 2:15am UTC](https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054/8 "2022-08-03T02:15:59Z")

</div>

参考程度でお伺いしますが、日本国内の社員さんエンジニアの方は、

本コミュニティご覧になっていないのでしょうかね・・・

---

<div class="post-metadata">

**Author:** ![natsumimori](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/natsumimori/32/39807_2.png) [@natsumimori](https://community.hubspot.com/u/natsumimori)\
**Post date:** [August 4, 2022, 1:34am UTC](https://community.hubspot.com/t/crm-v3-objects-contacts-search-invalid-input-json/62054/9 "2022-08-04T01:34:20Z")

</div>

[@吉田成一](https://community.hubspot.com/t5/user/viewprofilepage/user-id/345451) さん

はい、HubSpotの社員もコミュニティー投稿を拝見しておりますが、今回のようにご質問内容に知見の深いコミュニティーメンバーの方が回答をしてくださる例も多くございます。ぜひ今後もHubSpotコミュニティーをご利用ください＾＾
