[英]how to validate JSON string before converting to XML in C#
問題:將JSON響應轉換為XML時,出現錯誤
“無法處理請求。原因:名稱中不能包含''字符,十六進制值0x20。”
上面的錯誤表明JSON密鑰包含一個空格 [例如:\\“ POI Items \\”:[{\\“ lat \\”:{\\“ value \\”:\\“ 00 \\”}]無法轉換為XML元件。
有什么方法可以僅識別JSON密鑰的[“ POI Items”]並刪除其中的空格?
還建議任何替代解決方案,這樣我們就不必更改現有解決方案了嗎?
問候,
蘇德赫
您可以使用Json.Net並在加載json時替換名稱。
JsonSerializer ser = new JsonSerializer();
var jObj = ser.Deserialize(new JReader(new StringReader(json))) as JObject;
var newJson = jObj.ToString(Newtonsoft.Json.Formatting.None);
。
public class JReader : Newtonsoft.Json.JsonTextReader
{
public JReader(TextReader r) : base(r)
{
}
public override bool Read()
{
bool b = base.Read();
if (base.CurrentState == State.Property && ((string)base.Value).Contains(' '))
{
base.SetToken(JsonToken.PropertyName,((string)base.Value).Replace(" ", "_"));
}
return b;
}
}
輸入: {"POI Items":[{"lat":{"value":"00","ab cd":"de fg"}}]}
輸出: {"POI_Items":[{"lat":{"value":"00","ab_cd":"de fg"}}]}
我建議使用某種Regex.Replace()
。
在輸入字符串中搜索類似以下內容的內容:
\"([a-zA-Z0-9]+) ([a-zA-Z0-9]+)\":
然后替換類似(注意缺少的空間):
\"(1)(2)\":
第一對括號包含變量名中的第一個單詞,第二對括號表示第二個單詞。 :
保證僅在變量名中執行此操作(而不在字符串數據中)。 JSON變量名稱位於一對\\"
。
也許不是100%正確,但是您可以以此開始搜索。 有關詳細信息,請檢查MSDN和一些Regex示例
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.replace.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.