大家好,我有一个从url返回的字符串:
{ "Title": "Star Wars", "Year": "1977", "Rated":"3" }
如何在不使用Json库的情况下获取此类标题,评级,年份?
答案 0 :(得分:3)
您可以尝试这样做:
var str = @"{ ""Title"": ""Star Wars"", ""Year"": ""1977"", ""Rated"":""3"" }";
//remove "{" and "}" from string
var result = str.Trim('{', '}');
//separate each property-value pairs, and remove leading & trailing white spaces
var pairs = result.Split(',').Select(o => o.Trim()).ToArray();
foreach (var pair in pairs)
{
//separate key from it's value and remove leading & trailing white spaces
var keyValue = pair.Split(':').Select(o => o.Trim()).ToArray();
//print result
Console.WriteLine("{0} = {1}", keyValue[0], keyValue[1]);
}
更新:
我同意@pickypg的评论,手动做一组字符串操作操作并不是处理JSON的最终方式。这仅在特定情况下更好:处理包含“安全”字符串的小JSON。如果你正在寻找一般&强大的方法,没有人会建议使用经过验证的JSON库,如JSON.NET。同意使用.Trim()
而不是两次Replace()
,因此稍微更新了我的代码。
答案 1 :(得分:1)
如果你需要解析Json,你应该使用一个库来正确地完成它。好吧,这个解决方案可能有点矫枉过正,但你可以这样做:
Regex regex = new Regex("\"(?<field>.+?)\":\\s*\"(?<value>.*?)\"");
Match match = regex.Match("{ \"Title\": \"Star Wars\", \"Year\": \"1977\", \"Rated\":\"3\" }");
while (match.Success)
{
Console.WriteLine("Field: "+match.Groups["field"].Value+ ", Value: "+match.Groups["value"].Value);
match = match.NextMatch();
}
答案 2 :(得分:0)
这是无效的json,你必须手动解析像分裂。
Parse error on line 4:
..."1977", "Rated"}
---------------------^
Expecting ':'
试试这个
string[] words = s.Split(' ');
foreach (string word in words)
{
Console.WriteLine(word);
}
添加的类代码忽略上面:
public class RootObject
{
public string Title { get; set; }
public string Year { get; set; }
public string Rated { get; set; }
}