制定 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 数据包。
我正在尝试发出 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 数据包。