一,什麼是json
json是一種資料結構,易於人閱讀和編寫,同時也易於機器解析和生成。
json建構兩種結構:
1,「名稱/值」成對的集合,不同的語言中,它被理解為物件(object),紀錄(record),結構(struct),字典(dictionary),雜湊表(hash table),有鍵列表(keyed list),或者關聯陣列 (associative array)。
2,值的有序列表(an ordered list of values)。在大部分語言中,它被理解為陣列(array)。
json具有以下這些形式:
物件是乙個無序的「『名稱/值』對」集合。乙個物件以「」(右括號)結束。每個「名稱」後跟乙個「:」(冒號);「『名稱 /值』 對」之間使用「,」(逗號)分隔
二,我遇到的問題
看下面的例子:
檢視複製列印?
<?php
$string = '
], "shaded" : 0,
"prod_cat_image_name" : 0165,
"skintype_desc" : "",
"product_id" : "prod2158"
} ';
//下面的正則是把0615這樣資料,轉換成"0615"
$pattern = "/:(\s*)0(\d+)/ui";
$replacement = ':\\1"0\\2"';
$string = preg_replace($pattern, $replacement, $string);
$result = json_decode($string, true);
print_r($result);
$string = json_encode($result);
echo $string;
?>
操作和分析:
1,如果我把正則的東西拿掉的話,print_r($result);根本顯示不了任何東西,問題就出在016500這樣的資料上,他搞不清楚,這樣的資料到底是字串型別,還是數值型別。加上雙引號就好了。
2,我把陣列又重新$string = json_encode($result);並把json字串列印出來,發現在json_encode會把016500加上雙引號,由此可以斷定,php**中的那段json字串是手動生成的。
3,即使像016500這樣的資料沒有加上雙引號,我想json_decode也可以做出準確的判斷,因為這個邏輯不複雜,所以我想json_decode是不是應當改進一下,還有我用php版本是5.2.3,不知道最新的版本有沒有修正這個bug
參考:
無意中發現的WIN7的BUG
於是猜測,這可能是win7的桌面對ico圖示檔案會建立乙個索引或者有快取,那麼我要是把桌面重新啟動呢,會不會就可以重新整理過來?想不如做,立即試試。顯示桌面的程式是explorer.exe,於是開啟任務管理器,將其強制結束掉。之後,點任務管理器裡的檔案 新建任務 輸入explorer.exe 回車,...
無意中的StackOverflowError
created by ouer1994 on 16 11 25.public class list 1 static class m override public string tostring 我認為產生此錯誤的原因是遞迴呼叫tostring 方法。return this name name 這...
無意中發現一位大佬的演算法刷題pdf筆記
昨晚逛github,無意中看到一位大佬 的演算法刷題筆記,感覺發現了寶藏!有些小夥伴可能已經發現了,但咱這裡還是忍不住安利一波,怕有些小夥伴沒有看到。關於演算法刷題的困惑和疑問也經常聽朋友們提及。這份筆記裡面共包含作者刷leetcode演算法題後整理的數百道題,每道題均附有詳細題解過程。很多人表示刷...