2012-10-28 35 views
3

如何在Dart中安全地解析查詢字符串?如何解析Dart中的查詢字符串?

假設我有q字符串的值:

?page=main&action=front&sid=h985jg9034gj498g859gh495 

理想的代碼都應該在服務器和客戶端的工作,但現在我會滿足於一個工作的客戶端代碼。

回答

6

我已經做了簡單的包用於該目的恰好:https://github.com/kaisellgren/QueryString

實施例:

import 'package:query_string/query_string.dart'); 

void main() { 
    var q = '?page=main&action=front&sid=h985jg9034gj498g859gh495&enc=+Hello%20&empty'; 

    var r = QueryString.parse(q); 

    print(r['page']); // "main" 
    print(r['asdasd']); // null 
} 

結果是一個Map。訪問參數只是一個簡單的r['action'],訪問不存在的查詢參數是null

現在,安裝,添加到您的pubspec.yaml作爲一個依賴:

dependencies: 
    query_string: any 

和運行pub install

該庫還處理諸如%20+等事情的解碼,甚至可以處理空參數。

它不支持「數組樣式參數」,因爲它們不是RFC 3986規範的一部分。

7

越簡單越好。尋找類Uri的靜態方法splitQueryString

Map<String, String> splitQueryString(String query, {Encoding encoding: UTF8}) 

Returns the query split into a map according to the rules specified for 
FORM post in the HTML 4.01 specification section 17.13.4. Each key and value 
in the returned map has been decoded. If the query is the empty string an 
empty map is returned.