私はJavaScriptでデータを読み込んでおり、そのようなJsonstringをWebサーバーに渡してい{"data_size":500, "array":[0,0,0,0,..,0,0]}
ます。配列内の数値は、0 から 4294967295 までの任意の数値です。
Mongoose Web サーバーでは、lib rapidjson を使用して Jsonstring を操作しています。したがって、ドキュメント dを作成し、これを使用して「jsonstring」から uint32_t 配列に値を読み取ります。
#include "rapidjson/document.h"
int i_data_size=0;
Document d;
conn->content[conn->content_len]=0; //to zero terminate
if (d.Parse(conn->content).HasParseError())
{
//Error
}
else
{
Value& s = d["data_size"];
i_data_size=s.GetInt();
uint32_t *Data=NULL;
Data=new uint32_t[i_data_size];
Value& a = d["array"];
for(SizeType i=0;i<a.Size();i++)
{
Data[i]=a[i].GetUint();
}
}
conn->content
json char* が含まれています。
私が送っているとき:{"data_size":500, "array":[0,0,0,0,..,0,0]}
すべてがうまくいきます。しかし、毎回ではありませんが、a の数が次のように大きくなる場合があります。
{"data_size":500, "array":[123,222,0,0,..,0,0]}
エラーが表示されます:
free(): 無効な次のサイズ (通常)