【问题标题】:Windows Phone Parse json data? from Url with user input?Windows Phone 解析 json 数据?来自带有用户输入的 URL?
【发布时间】:2014-05-28 05:58:22
【问题描述】:

我跟随 this 创建了 Restful Web 服务,将 JSON 显示为来自 MySQL 数据库的输出。

我成功完成了,但这里我在数据库中有近 100 个不同名称的表

我正在获取这种 Json 数据

{"WindowsResult":[{"ID":9,"TYPE":"WindowsPhone","TITLE":"XYZ","PRICE":"$0","IMAGE":"Post1.jpg"}],"success":3}

这是另一个结果

{"SonyResult":[{"ID":3,"TYPE":"SonyXperia","TITLE":"XYZ","PRICE":"$0","IMAGE":"Post2.jpg"}],"success":3}

这是另一个

{"SamsungResult":[{"ID":1,"TYPE":"Samsung","TITLE":"XYZ","PRICE":"$0","IMAGE":"Post3.jpg"}],"success":3}

为此,我从 url 解析 JSON 数据 像 localhost/Service1.svc/windows 或 localhost/Service1.svc/sony 这样的

这里应该使用用户输入..

private void btnAdd_Click(object sender, RoutedEventArgs e)
{

string Data = txtData.Text;
string ServiceUri = "http://lhost:30576/Service1.svc/"
+ "Data" + "/";
WebClient proxy = new WebClient();
proxy.DownloadStringCompleted +=
new DownloadStringCompletedEventHandler(proxy_DownloadStringCompleted);
proxy.DownloadStringAsync(new Uri(ServiceUri));

}

但我在这里很困惑

void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
 {
 var rootObject = JsonConvert.DeserializeObject<RootObject>(e.Result); 
 foreach (var TYPE in rootObject.SonyResult) 
 { 
 Console.WriteLine(type.TITLE);
 } 
 }

根对象应该是什么
对于某些结果,我将 SamsungResult 作为这样的根对象。
请就此向我提出建议..

更新

当我输入像http://www.google.com/service1.scv/sony这样的网址时

我来了

{"SonyResult":[{"ID":3,"TYPE":"SonyXperia","TITLE":"XYZ","PRICE":"$0","IMAGE":"Post2.jpg"}],"success":3}

就像每个品牌一样,我有一个结果不是所有在一个字符串中..

【问题讨论】:

    标签: c# json windows-phone-8


    【解决方案1】:

    K 兄弟,问题出在您的 json 数据中

    {"Mobiles":[
       {"SonyResult":[{"ID":3,"TYPE":"SonyXperia","TITLE":"XYZ","PRICE":"$0","IMAGE":"Post2.jpg"}],"success":3},
       {"WindowsResult":[{"ID":9,"TYPE":"WindowsPhone","TITLE":"XYZ","PRICE":"$0","IMAGE":"Post1.jpg"}],"success":3}
    ]}
    


    由于您没有为我们的表指定 Root 对象名称,因此 json 使用您的表名称作为根对象。
    它的 C# 类将是

    public class SonyResult
    {
    public int ID { get; set; }
    public string TYPE { get; set; }
    public string TITLE { get; set; }
    public string PRICE { get; set; }
    public string IMAGE { get; set; }
    }
    public class WindowsResult
    {
    public int ID { get; set; }
    public string TYPE { get; set; }
    public string TITLE { get; set; }
    public string PRICE { get; set; }
    public string IMAGE { get; set; }
    }
    public class Mobile
    {
    public List<SonyResult> SonyResult { get; set; }
    public int success { get; set; }
    public List<WindowsResult> WindowsResult { get; set; }
    }
    public class RootObject
    {
    public List<Mobile> Mobiles { get; set; }
    }
    


    希望能解决您的问题。

    更新
    对于您收到的查询,C# 类将是

    public class SonyResult 
    {public int ID { get; set; }
     public string TYPE { get; set; }
     public string TITLE { get; set; }
     public string PRICE { get; set; }
     public string IMAGE { get; set; }
    }
    public class RootObject
    {
     public List<SonyResult> SonyResult { get; set; }
     public int success { get; set; }
    }
    

    现在,对于每个不同的模型,您都会得到不同的查询,其中每个查询都是自己的数组,没有共同的对象名称。因此,对于每个不同的模型,根对象类都会有所不同。 我没有尝试过,因为我无法访问您的代码,但请尝试这种格式是否有效(因为我没有尝试过,所以我怀疑这是否有效)。

    public class SonyResult
    {
    public int ID { get; set; }
    public string TYPE { get; set; }
    public string TITLE { get; set; }
    public string PRICE { get; set; }
    public string IMAGE { get; set; }
    }
    public class WindowsResult
    {
    public int ID { get; set; }
    public string TYPE { get; set; }
    public string TITLE { get; set; }
    public string PRICE { get; set; }
    public string IMAGE { get; set; }
    }
    public class RootObject
    {
    public List<SonyResult> SonyResult { get; set; }
    public int success { get; set; }
    public List<WindowsResult> WindowsResult { get; set; }
    }
    

    【讨论】:

    • Thaks @jerin Sir 但这里我的问题是我的手机不是我的 SonyResult 我的意思是它以一个字符串开头并不是所有电话都列在一个字符串中...感谢重播但请尝试为了帮助我,请检查我的更新问题...
    • 我创建了一个聊天室,如果你有更多问题,我可以帮助你chat.stackoverflow.com/rooms/55112/…
    • 谢谢@Jerin 先生,但我的问题是根对象可能是像 SonyResult 之类的任何东西,就像您使用 Mobile 一样,它应该自动替换数据 .. 使用 SonyResult ,每种类型的结果都类似。 .
    • 为此,您是否尝试在根对象中添加 SonyResult 和 WindowResult?行得通吗。你能反序列化吗?
    • 先生,它应该是一次一个结果,而不是一次全部。如果我搜索索尼,它应该显示索尼,如果我搜索 iPhone,它应该显示那个特定的.....跨度>
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多