JsonObject / JsonValue无法解析Windows Phone 8中的JSON

时间:2013-04-24 10:48:58

标签: visual-studio-2012 windows-phone-8

我在Windows Phone 8中解析JSON时遇到问题。我有一个类似

的json字符串
{"ids":{"internal":[{"type":"ABCD","id":"7BCDCA0676CC8E2F5","time":19376,"asV":"AP_33160"}
                     ,{"type":"ADFP","id":"A2D3D22A6458BC2B","time":19376,"asV":"AP_420TETA"}
                     ]
            },
 "err":6000,
 "msg":"No Msg",
 "timeTL":87600
}

我希望拥有以下值:

string strIds= "{"internal":[{"type":"ABCD","id":"7BCDCA0676CC8E2F5","time":19376,"asV":"AP_33160"},{"type":"ADFP","id":"A2D3D22A6458BC2B","time":19376,"asV":"AP_420TETA"}]}" ;


int err= 6000;
string message= "msg";
int timeTL=87600;

我可以使用JsonValue在Windows 8上获得所需的结果,但Windows Phone 8不支持。主要问题是“内部”的内容不固定,我想保存“完整”的完整值ids“变成一个字符串。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用 Newtonsoft.Json 解析Json数据。这个库可以在Nuget.org上找到。 将此项添加到yuor项目,方法是转到Tools-> Libiya Package Manager - > Packae管理器控制台 并键入 Install-Package Newtonsoft.Json

按如下方式创建课程。通过使用json字符串和http://json2csharp.com/

public class RootObject
{
    //public Ids ids { get; set; } 
    public object ids { get; set; } //use type object for id 
    public int err { get; set; }
    public string msg { get; set; }
    public int timeTL { get; set; }
}


results = reader.ReadToEnd();
then using newtonsoft.json
RootObject root = JsonConvert.DeserializeObject<RootObject>(results, new JsonSerializerSettings
                    {
                        NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore,
                        TypeNameHandling = TypeNameHandling.All,
                        TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full
                    });

您可以使用

获取Id的价值
string str= root.ids.Tostring();

希望这有效