我如何在窗口电话中获得密钥,价值对?

时间:2014-03-20 02:57:50

标签: c# json windows-phone-8

大家好,我有一个从url返回的字符串:

{ "Title": "Star Wars", "Year": "1977", "Rated":"3" }

如何在不使用Json库的情况下获取此类标题,评级,年份?

3 个答案:

答案 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; }
}

使用json2csharp