2011-08-25 34 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); 
     } 
    } 
}