簡體   English   中英

Json 鍵值與否?

[英]Json key has value or not?

我想知道json特定鍵是否有價值

請檢查我下面的json:

[{"highest_education":"B.E ( Automobile Engineering )","occupation":"Job in Private Office","annual_income":""}]

在這個json中,我想檢查year_income在PHP中是否有價值

我不想要 json_decode() 並檢查每個值它不是好的解決方案

解碼后首先解碼json ,您將獲得數組,然后使用條件檢查特定值

 json_decode($myObj);

檢查 year_income 是否有價值。 您必須首先將 json 數據轉換為數組。 像下面的代碼。

$yourArray = json_encode($yourArray,true);

一旦您的 json 將轉換為數組,您將檢查 year_income 是否有價值。

if(!empty($yourArray[0]['annual_income']) && $yourArray[0]['annual_income'] != ''){
  // Not empty
}

好吧,我不同意json_decode()性能不佳; 下面我給你看證明。

要完成您的任務,您可以使用以下代碼:

$json_string = '[{"highest_education":"B.E ( Automobile Engineering )","occupation":"Job in Private Office","annual_income":""}]';
$json_array = json_decode($json_string, true);
if(isset($json_array['annual_income']) && !empty($json_array['annual_income'])) {
    // value is not null
} else {
    // value is null or empty
}

根本不需要遍歷 JSON 數組。

使用 PHP 7.1.16,我將兩種方法都運行了 1000 次, strpos()json_decode()之間的性能差異並不顯着。

json_decode() used: 0.001691s
strpos() used: 0.00033s

完整的測試代碼在這里: https : //pastebin.com/ZcpjydfK ,你可以在你的電腦上測試它。

另一方面,使用strpos()方法存在問題。 有可能 JSON 字符串格式錯誤,或者冒號:之間添加了空格,那么您的strpos()檢查將不起作用。

這不是 json_decode() 並檢查每個鍵的好方法,它太長並且執行速度低

我得到了正確的答案

$annual_income1='"annual_income":""';
$annual_income2='"annual_income":null';    
if(strpos($json,$annual_income1) !== false || strpos($json,$annual_income2) !== false){ 
echo "annual_income key is empty";
}

暫無
暫無

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

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