MFC/ATL имеет очень хороший токенизатор. Из MSDN:
CAtlString str( "%First Second#Third" );
CAtlString resToken;
int curPos= 0;
resToken= str.Tokenize("% #",curPos);
while (resToken != "")
{
printf("Resulting token: %s\n", resToken);
resToken= str.Tokenize("% #",curPos);
};
Output
Resulting Token: First
Resulting Token: Second
Resulting Token: Third
Несмотря на то, что синтаксис технически допустим, он не выполняет то, что вы думаете.
'custom_fields' => {
{ "key" => "height", "value" => 500 },
{ "key" => "width", "value" => 750 }
},
примерно эквивалентен чему-то вроде:
'custom_fields' => {
'HASH(0x881a168)' => { "key" => "width", "value" => 750 }
},
, что определенно не то, что вам нужно. (Часть 0x881a168 будет отличаться; на самом деле это адрес, по которому хранится хэш-ссылка.)
Я не уверен, каков правильный синтаксис для настраиваемых полей. Вы можете попробовать
'custom_fields' => [
{ "key" => "height", "value" => 500 },
{ "key" => "width", "value" => 750 }
],
, который установит custom_fields в массив хэшей. Но это может быть не так. Это зависит от того, что ожидает send_request
.