我正在创建一个数组,用于将候选人详细信息发布到API。 该API接受JSON格式的数据,我正在使用PHP数组为该API创建数据,并使用JSON编码将其转换为JSON数组。但无法获得预期的格式
PHP代码
$postArray = array(
"DefaultCurrency" => "USD",
"UserName" => "data",
"Photograph" => "data",
"PhotographThumb" => "data",
"Group" => "data",
"Summary" => "data",
"ResumeText" => "data",
"RollupListMembership" => array(
"RollupCode" => "data"
),
"CustomFields" => array(
"FieldName" => "Major",
"Values" => array(
$finalResumeData-> "data"
),
"FieldName" => "Years of Experience",
"Values" => array(
$MonthsOfWorkExperience
),
"FieldName" => "Executive Type",
"Values" => array(
$finalResumeData-> "data"
),
)
);
如果我运行此代码,因为它仅显示CustomFields的最后结果
我尝试对类似数组{p>中的各个 CustomFields 使用array()
"CustomFields" => array(
array("FieldName" => "Major",
"Values" => array(
$finalResumeData-> "data"
)),
我得到的结果是
CustomFields: {
"0": {
"FieldName" : "Value",
"Values": ["data"]
}
}
预期结果
"CustomFields": [
{
"FieldName": "string",
"FieldType": "string",
"Values": [
"string"
]
},
{
"FieldName": "string",
"FieldType": "string",
"Values": [
"string"
]
}
],
所以我应该在PHP数组中更新什么以获得预期的结果。
答案 0 :(得分:2)
在“ CustomFields”内部,您将在一个数组中再次重复相同的键,因此它们将彼此覆盖。相反,您需要一个单独的对象数组(由PHP中的关联数组表示),即与所需JSON输出中所示的结构相同。
"CustomFields" => array(
array(
"FieldName" => "Major",
"Values" => array(
$finalResumeData->data
)
),
array(
"FieldName" => "Years of Experience",
"Values" => array(
$MonthsOfWorkExperience
)
),
array(
"FieldName" => "Executive Type",
"Values" => array(
$finalResumeData->data
)
),
)
假设您使用的是json_encode($postArray);
,没有任何其他选项。
答案 1 :(得分:2)
我刚刚修改了您的代码,并获得了所需的输出。
if (Request.Headers["X-MicrosoftAjax"] != "Delta=true")
{
// Compression logic here
}
这是我得到的输出。
$postArray = array(
"DefaultCurrency" => "USD",
"UserName" => "data",
"Photograph" => "data",
"PhotographThumb" => "data",
"Group" => "data",
"Summary" => "data",
"ResumeText" => "data",
"RollupListMembership" => array(
"RollupCode" => "data"
),
"CustomFields" => array(
array("FieldName" => "Major",
"Values" => array(
'dsadas'=> "data"
)),
array("FieldName" => "Years of Experience",
"Values" => array(
'rewrew'=>'dsa'
)),
array("FieldName" => "Executive Type",
"Values" => array(
'test'=> "data"
)),
)
);
echo "<pre>";print_r($postArray);
echo json_encode($postArray);
?>