从 JSON 网页读取对象 Windows Phone 8.1

Read Object from JSON web page in Windows Phone 8.1

我想从 JSON 文件中读取一些对象列表<>,该文件由 PHP 文件生成。 当我尝试编译它时,我遇到了一些问题,似乎智能手机正在等待什么。另外我不确定 Windows Phone 的读取是否正确。预先感谢您的帮助 ! 这是 JSON 文件示例:

{"giocatori":[{"Giocatore":"124","Cognome":"DE SANCTIS","Ruolo":"P","Squadra":"ROM"},{"Giocatore":"140","Cognome":"MIRANTE","Ruolo":"P","Squadra":"PAR"},{"Giocatore":"156","Cognome":"SKORUPSKI","Ruolo":"P","Squadra":"ROM"}],"success":1}

这些是对象:

public class Giocatori
{
    public string Giocatore { get; set; }
    public string Cognome { get; set; }
    public string Ruolo { get; set; }
    public string Squadra { get; set; }

    public override string ToString()
    {
        return Giocatore + " " + Cognome + " " + Ruolo + " " + Squadra;
    }
}

public class RootObject
{
    public List<Giocatori> giocatori { get; set; }
    public int success { get; set; }
}

方法如下:

 private async Task<RootObject> getPlayers()
    {
        Uri serviceUri = new Uri("myURL");
        HttpClient client = new HttpClient();
        string jsonString = await client.GetStringAsync(serviceUri);
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 
        RootObject RootObject = new RootObject();
        DataContractJsonSerializer ser = new DataContractJsonSerializer(RootObject.GetType()); 
        RootObject = ser.ReadObject(ms) as RootObject;
        return RootObject;
    }

    private void loadPlayers()
    {
        RootObject players =  getPlayers().Result;
        setComboboxs(players.giocatori); // The method which I need to use the 
    }

通过 Nuget 下载 JSON.Net 包。

右键单击项目 > 管理 Nuget > Json.net > 安装

根据 http://json2csharp.com/ 你的 class 应该是这样的。

public class Giocatori
    {
        public string Giocatore { get; set; }
        public string Cognome { get; set; }
        public string Ruolo { get; set; }
        public string Squadra { get; set; }
    }

    public class RootObject
    {
        public List<Giocatori> giocatori { get; set; }
        public int success { get; set; }
    }

RootObject 可以重命名为任何您喜欢的名称。

当您收到 JSON 时

JsonConvert.DeserializeObject<RootObject>("jsonstring");