0

json形式でphpサーバーにメールを送信しようとしましたが、そのjsonを検証するとエラーが表示されます

 {"function":"contacts", "parameters": {"emails": "(
     "John@mac.com",
     "anna@gmail.com",
     "hank@mac.com"
  )","user_id": "90"},"token":""}

エラーは次のように表示されます -

 Parse error on line 4:
  ...{        "emails": "(         "John@ma
  ----------------------^
   Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
4

5 に答える 5

2

すべての配列に角括弧を使用する必要があります。現在、括弧を使用しており、配列ではなく文字列を示す引用符から始めています。

値全体を、文字列内の引用符を「\」でエスケープする文字列にするか、引用符を削除して括弧を角括弧に置き換える必要があります。

注: 上記の構文の強調表示は、どこが間違っているかを示唆しているはずです。

于 2013-07-22T16:19:37.297 に答える
0

配列は..ではなく"(...で区切られているようです。とりわけ、これはその中の文字列を「裏返し」にします。配列に似た引用符付きの文字列にするつもりなら、. のように内部の引用符をエスケープする必要があります。http://www.json.org/のフローチャートは、非常に小さな仕様であるため、非常に便利です。)"[]foo \"and\" bar

于 2013-07-22T16:19:58.530 に答える
0

あなたの要素は、 で始まり で終わるemails文字列として定義されています。"()"

その文字列内には、引用符で始まり、引用符で終わる個別の文字列があります。

これは明らかに間違っています。

おそらくあなたが意図したのは"emails" : [ ...... ]

(...実際にemails要素を文字列にすることを意図していない限り、その場合、その中の引用符は as としてエスケープする必要があり\"、改行は as としてエスケープする必要があり\nますが、それはあなたが意図したものではないと思いますよね? )。

そのため、構文エラーが発生しています。

ただし、ここでの重要な点は、このような問題が、JSON コード (または XML などの他のテキストベースの構文) を手書きすることがなぜ悪い考えであるかを示しているということです。使用している言語内から JSON 文字列を作成するには、常にエンコーダーまたはデコーダーを使用する必要があります。これにより、このような問題に対処する必要がなくなります。エンコーダーを使用すると、JSON は常に有効になります。心配する必要はありません。

それが役立つことを願っています。

于 2013-07-22T16:21:42.487 に答える
0

私はあなたが欲しいと思っています:

 {
     "function":"contacts",
     "parameters": {
         "emails": [
             "John@mac.com",
             "anna@gmail.com",
             "hank@mac.com"
         ],
         "user_id": "90"
     },
     "token":""
 }
于 2013-07-22T16:23:04.483 に答える