我正在寻找一种方法来清理C#中的以下json字符串,以便更有用。
“{令牌\ ”:\“ I3dt-MIByyWD5-XqF6VT3hQSk8qvy9r6 \ \ ”}“?”
基本上只是将其剥离为
的方法“令牌:I3dt-MIByyWD5-XqF6VT3hQSk8qvy9r6”或只是“I3dt-MIByyWD5-XqF6VT3hQSk8qvy9r6”
我认为这对于实现这一点会有好处,但不幸的是我以前从未写过一篇文章而且有点失去了如何获得我正在寻找的东西。解析发生在C#BTW。
编辑:更正正则表达式可能不会做我想要的...我想格式化字符串..而不仅仅是验证它。
答案 0 :(得分:1)
最好将其解析为JSON
对象,然后使用JSON
API从中获取token
密钥的值。
答案 1 :(得分: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);
}
}
}
答案 2 :(得分: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");