0、用Newtonsoft.Json吧,nuget install一下很開心的。
如果你是剛學習C#,在練習,程式碼很棒了,很乾淨,閱讀起來很輕鬆。
如果這段程式碼要用到工作中:
1、考慮複雜度之前,首先是正確性,解析json的方法要考慮雙引號轉義(value裡面出現雙訊號)。
2、json可以直接反序列化成一個物件,你的方法只支援key-value,侷限性很大。
3、如果json只放一組key-value,直接 indexOf("\"" + key + "\""),然後再找value,效率應該會比三個for高一些。
4、如果json不止一組key-value,多次遍歷字串查詢也是問題,可以考慮結果快取Dictionary。
5、4中的Dictionary如果是某個class例項的成員,要考慮在程式不同地方傳遞這個例項,或許把json string hash一下然後存在一個靜態變數裡可以解決這個問題, private static Dictionary<hash, Dictionary<key, value>>。
6、如果是靜態例項,那麼多執行緒時constructor/parser就要考慮加鎖了。
7、你這段程式碼裡 index[i + 1] 之前沒有index越界檢查,如果傳入json報錯,會拋一個index blahblahblah的異常,在稍大規模的系統裡面遇到錯誤,就很難排查了。
8、返回值有可能是null,那麼每次call這個函式之後,都要判斷是否為null,也很繁瑣,建議使用exception。
9、逗號後面要加空格;單行的 if 要加大括號。
0、用Newtonsoft.Json吧,nuget install一下很開心的。
如果你是剛學習C#,在練習,程式碼很棒了,很乾淨,閱讀起來很輕鬆。
如果這段程式碼要用到工作中:
1、考慮複雜度之前,首先是正確性,解析json的方法要考慮雙引號轉義(value裡面出現雙訊號)。
2、json可以直接反序列化成一個物件,你的方法只支援key-value,侷限性很大。
3、如果json只放一組key-value,直接 indexOf("\"" + key + "\""),然後再找value,效率應該會比三個for高一些。
4、如果json不止一組key-value,多次遍歷字串查詢也是問題,可以考慮結果快取Dictionary。
5、4中的Dictionary如果是某個class例項的成員,要考慮在程式不同地方傳遞這個例項,或許把json string hash一下然後存在一個靜態變數裡可以解決這個問題, private static Dictionary<hash, Dictionary<key, value>>。
6、如果是靜態例項,那麼多執行緒時constructor/parser就要考慮加鎖了。
7、你這段程式碼裡 index[i + 1] 之前沒有index越界檢查,如果傳入json報錯,會拋一個index blahblahblah的異常,在稍大規模的系統裡面遇到錯誤,就很難排查了。
8、返回值有可能是null,那麼每次call這個函式之後,都要判斷是否為null,也很繁瑣,建議使用exception。
9、逗號後面要加空格;單行的 if 要加大括號。