NewtonJsonシーケンス化におけるエスケープスラッシュと余分な引用符の処理

3575 ワード

2つの質問:
  • 中国語文字化けし;
  • エスケープスラッシュ
  • が現れる
    文字列は次のとおりです.
    {\”state\":0,\"msglist\":[{\"IMTime\":\"2018-06-06  21:32:28\",\"LineName\":\" \",\"IMMsg\":\" \"},{\"IMTime\":\"2018-06-06  21:32:28\”,\”LineName\”:\” \”,\”IMMsg\":\" , !\"}]}"
    
    

    中国語の文字化けし

  • 中国語の文字化けしはきっと符号化フォーマットの問題で、uft-8に変換して
  • を試してみます
    WebClient web = new WebClient();  
    web.Encoding = System.Text.Encoding.GetEncoding("GB2312");  
    string result =Encoding.UTF8.GetString(web.DownloadData(ConnConfig.WebAPI + "/ImmediateTest/" + TaskName));
    
    
    

    エスケープスラッシュ問題


    二つの可能性がある
  • シーケンス化によるこの問題の排除の鍵は、シーケンス化後の文字列にエスケープ文字があるかどうかを見ることにある
  • .
  • ネットワーク転送による符号化の問題1が排除された場合、それは2問題の経験証であり、ネットワーク転送によって余分なエスケープ文字列が発生したからこそ、エスケープ文字列の削除方法は以下の通りである(明らかに効率が低く、より効率的な方法があれば、多く教えてください):
  • StringBuilder sb = new StringBuilder();
    string[] parts = result.Split(new char[] { ' ', '
    '
    , '\t', '\r', '\f', '\v', '\\' }, StringSplitOptions.RemoveEmptyEntries); int size = parts.Length; for (int i = 0; i < size; i++) sb.AppendFormat("{0}", parts[i]); result = sb.ToString();