我試圖從WCF REST服務返回一個字典作爲JSON對象。我想格式爲 {「key」:「value」} 所以我創建了我自己的類,如here和here所述。來自WCF的JSON響應轉義名稱值
該服務方法的工作原理,排序。問題是鍵名被轉義。例如,如果我的字典包含「Hello world」:100,我會得到 {「Hello_x0020_world」:100}。它也逃脫像%等其他字符等。
有沒有什麼辦法可以告訴序列化不要逃避名稱的方式?這幾乎就像它使用的XML規則不(一定)適用於JSON。
我的序列化類:
[Serializable]
public class JsonDictionary : ISerializable
{
private Dictionary<string, object> _Dictionary;
public JsonDictionary()
{
_Dictionary = new Dictionary<string, object>();
}
public JsonDictionary(SerializationInfo info, StreamingContext context)
{
_Dictionary = new Dictionary<string, object>();
SerializationInfoEnumerator enumerator = info.GetEnumerator();
while (enumerator.MoveNext())
{
_Dictionary.Add(enumerator.Name, enumerator.Value);
}
}
public object this[string key]
{
get { return _Dictionary[key]; }
set { _Dictionary[key] = value; }
}
public void Add(string key, object value)
{
_Dictionary.Add(key, value);
}
public bool ContainsKey(string key)
{
return _Dictionary.ContainsKey(key);
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
foreach (string key in _Dictionary.Keys)
info.AddValue(key, _Dictionary[key], _Dictionary[key] == null ? typeof(object) : _Dictionary[key].GetType());
}
}
我的服務功能定義:
[WebGet(UriTemplate = "", ResponseFormat = WebMessageFormat.Json)]
public JsonDictionary GetCollection()
{
JsonDictionary dict = new JsonDictionary();
dict.Add("Hello world", 100);
return dict;
}
我一直很喜歡JSON在瀏覽器上的工作方式。如果你無法忍受開銷,那麼你需要一個流中的JSON壓縮器和一個客戶端上的解壓縮器。有很多在那裏 – danny117