制定 json 数组

Formulating json array

我正在尝试发出 httpc 请求。

httpc:request(post, {Baseurl,[{"Authorization",ApiKey2}],<<"application/json">>,Body},[],[]).

但是当我通过尝试制定下面给出的 Body 时:-

Body = lists:flatten(mochijson2:encode({struct,[{"registration_ids",[{array, "APA91bE445JOlMvdShgQAJIxuDcBQos7olZi82lWQ82W9HHTR0uxOILvDYo9F5827BhU0qpBi9xpBqN1BNciWogiWxenI7_au7Z42o6eqcFSkoAs-0tVJzVG3lju54PXRyVS1tmZNhjsQDCYwnHJH6m6j6h1vSPBZl6lt3j8tu44Euq3PyISKBM"}]},
     {"data",[{array,[{struct, [{"message","HGHJG"}]}]}]}
    ]})).

它给我这样的错误:- mod_gcm_apns:send_gcm_msg("GJHGHJ").

{error,{"HTTP/1.1",
    "Field \"data\" must be a JSON array: [[{\"message\":[72,71,72,74,71]}]]\n"}}

尝试了很多但无法找到解决方案。

根据 mdaguete 的建议进行更改后

% Create Json struct
  Body = lists:flatten(mochijson2:encode(
{struct,[
{<<"registration_ids">>,[<<"APA91bE445JOlMvdShgQAJIxuDcBQos7olZi82lWQ82W9HHTR0uxOILvDYo9F5827BhU0qpBi9xpBqN1BNciWogiWxenI7_au7Z42o6eqcFSkoAs-0tVJzVG3lju54PXRyVS1tmZNhjsQDCYwnHJH6m6j6h1vSPBZl6lt3j8tu44Euq3PyISKBM">>]},
 {<<"data">>,[
  {struct, [
      {<<"message">>,<<"HGHJG">>}
      ]}
     ]}
]})),

执行行:-

mod_gcm2:send_gcm_msg("JKJ").

但出现以下错误:

{error,{"HTTP/1.1",
    "JSON_PARSING_ERROR: Unexpected token END OF FILE at position 27.\n"}}

请提出解决方案。

通常解决问题最好最快的方法是阅读文档。

您正在使用来自 Bob Ippolito 的出色的 mochijson2 库,如果您 read the source 代码 header 您可以阅读正确的格式来表达 json二郎术语。

您 json 的正确格式可能是(您没有解释预期的结果):

{struct,[
 {<<"registration_ids">>,[<<"APA91bE445JOlMvdShgQAJIxuDcBQos7olZi82lWQ82W9HHTR0uxOILvDYo9F5827BhU0qpBi9xpBqN1BNciWogiWxenI7_au7Z42o6eqcFSkoAs-0tVJzVG3lju54PXRyVS1tmZNhjsQDCYwnHJH6m6j6h1vSPBZl6lt3j8tu44Euq3PyISKBM">>]},
 {<<"data">>,[
      {struct, [
          {<<"message">>,<<"HGHJG">>}
      ]}
 ]}
]}

此致。

正文变量:-

Body = lists:flatten(mochijson2:encode(
{ struct,[
{ registration_ids,
                   ['KEY']},
{ data,[{
           message,[Message]
}

这是与 Google GCM API 一起工作的最终 JSON 数据包。