2011-08-25 66 views
-1

我正在尋找一種方法來清理C#中的以下json字符串以便更加可用。如何從Request.Url清理json字符串

「{令牌\ 」:\「 I3dt-MIByyWD5-XqF6VT3hQSk8qvy9r6 \ \ 」}「?」

基本上只是一種方式,以剝離下來到

「令牌:I3dt-MIByyWD5-XqF6VT3hQSk8qvy9r6 「或者只是」I3dt-MIByyWD5-XqF6VT3hQSk8qvy9r6「

我認爲a會很好的完成這個,但不幸的是,我從來沒有寫過一個之前,有點失去了如何得到我在尋找使用一個。解析發生在C#BTW中。

編輯:更正正則表達式可能不會做我想要的...我想格式化字符串..不只是驗證它。

回答

1

最好將其解析爲一個JSON對象,然後使用JSON API從那裏獲取token密鑰的值。

0

你可以試試這樣的方法。 &將其作爲分隔符,如果你有這樣的鏈條"?{\"token\":\"I3dt-MIByyWD5-XqF6VT3hQSk8qvy9r6\"&\"other\":\"123\"}"。也清除字符「和\

static string MyParserJson(string sjson, string key) 
{ 
    try 
    { 
     if (!(sjson.Contains("{") && sjson.Contains("}"))) 
      throw new ApplicationException("don't exist { or }"); 

     int inipos = sjson.IndexOf("{"); 
     int endpos = sjson.IndexOf("}"); 

     var myjson = sjson.Substring(inipos + "{".Length, endpos - (inipos + "{".Length)); 
     string[] ajson = myjson.Split('&'); 

     foreach (var keyval in ajson) 
     { 
      if (!keyval.Contains(":")) 
       continue; 

      string[] afind = keyval.Split(':'); 

      if (afind[0].Contains(key)) 
      { 
       return afind[1].Replace("\"", "").Replace("\\", "").Trim(); 
      } 
     } 

    } 
    catch 
    { 
      //test 
    } 

    return string.Empty; 
} 


var uri = "?{\"token\":\"I3dt-MIByyWD5-XqF6VT3hQSk8qvy9r6\"}"; 
var token = MyParserJson(uri, "token"); 
1

檢查了這一點: http://msdn.microsoft.com/en-us/library/bb299886.aspx

還有一類,稱爲JsonTextReader,你可以用它來解析 方法如下:

string jsonText = @"[""Europe"", ""Asia"", ""Australia"", ""Antarctica"", 
""North America"", ""South America"", ""Africa""]"; 

using (JsonTextReader reader = new JsonTextReader(new 
StringReader(jsonText))) 
{ 
    while (reader.Read()) 
    { 
     if (reader.TokenClass == JsonTokenClass.String && 
      reader.Text.StartsWith("A")) 
     { 
      Console.WriteLine(reader.Text); 
     } 
    } 
}