簡體   English   中英

如何對多維數組進行JSON編碼?

[英]How to JSON encode multi-dimensional array?

我正在創建一個數組,用於將候選人詳細信息發布到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的最后結果

我曾嘗試對array()中的各個CustomField使用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數組中更新哪些內容以獲得預期的結果。

在“ 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); 沒有任何額外的選擇。

演示: https : //eval.in/1059736

我剛剛修改了您的代碼,並獲得了所需的輸出。

$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);
?>

這是我得到的輸出。

{  
  "DefaultCurrency":"USD",
  "UserName":"data",
 "Photograph":"data",
 "PhotographThumb":"data",
 "Group":"data",
 "Summary":"data",
 "ResumeText":"data",
 "RollupListMembership":{  
  "RollupCode":"data"
},
"CustomFields":[  
   {  
      "FieldName":"Major",
      "Values":{  
         "dsadas":"data"
      }
   },
   {  
      "FieldName":"Years of Experience",
      "Values":{  
         "rewrew":"dsa"
      }
   },
   {  
     "FieldName":"Executive Type",
     "Values":{  
        "test":"data"
     }
   }
  ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM