代码之家  ›  专栏  ›  技术社区  ›  unrelativity

将变量与C#(对于JSON)中的类相关联

  •  0
  • unrelativity  · 技术社区  · 14 年前

    我必须为我的一个项目获取API提供的JSON,这意味着使用类反序列化JSON,我选择了 DataContract 班级。在任何情况下,不同的url对应于API的不同JSON输出。

    那我要问什么?这是为了看看有没有更好的方法让url与 数据合同 而不是必须创建 public T GetObject<T>(string uri) 把它和 GetObject<ExampleDataContract>("http://blah/")

        public T GetObject<T>()
        {
            string uri = "";
            string type = typeof(T).ToString();
            switch (type)
            {
                case "Namespace.ExampleDataContract":
                    uri = "http://www.example.com/blah.json";
                    break;
            }
    
            return JsonHelper.Deserialize<T>(this.GetJson(uri));
        }
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   Community Dunja Lalic    7 年前

    我发现你的方法有一个问题:如果你有两个不同的url,都返回一个 ExampleDataContract

    不管怎样,你是对的摆脱魔弦 "Namespace.ExampleDataContract" 是个好主意。使用 if 708911 298976 .

    public T GetObject<T>()
    {
        string uri = "";
        if (typeof(T) == typeof(Namespace.ExampleDataContract))
        {
            uri = "http://www.example.com/blah.json";
        }
        else if (typeof(T) == ...)
        {
            ...
        }
        else
        {
            ... // throw some exception
        }
    
        return JsonHelper.Deserialize<T>(this.GetJson(uri));
    }