【问题标题】:Typescript -> To what cast a Dictionary from Json.net打字稿->从Json.net转换字典的内容
【发布时间】:2017-01-16 04:35:31
【问题描述】:

如果我使用 Json.Net,字典被序列化为:

{
    "key": "value",
    "key2": "value2",
    ...
}

如何将其转换为 Typescript 对象? 我最喜欢一个 typeof 值的数组

【问题讨论】:

    标签: javascript c# json typescript json.net


    【解决方案1】:

    可以使用以下接口在 TypeScript 中优雅地表达字典:

    interface IDictionary {
        [index:string]: string;
    }
    

    你可以这样使用它:

    var example: IDictionary = {
        "key1": "value1",
        "key2": "value2"
    }
    
    var value1 = example["key1"];
    

    通用字典允许任何键/值对的集合,因此您不需要明确描述确切的组合,这使得它与源字典非常相似(即它不会承诺有值对于给定的键)。

    你可以让它变得像你喜欢的那样复杂……甚至是通用的:

    interface IDictionary<T> {
        [index:string]: T;
    }
    

    【讨论】:

      【解决方案2】:

      由于您提供的代码和解释有限,应该是:

      interface MyJsonResponse {
          key: string;
          key2: string;
          ...
      }
      
      let json: MyJsonResponse = getResponse(); // {"key":"value","key2":"value2",...}
      

      【讨论】:

        【解决方案3】:

        这是为 Web 应用定义现有类并获取其实例的方法。

        let data = {"key":"value","key2":"value2", "key3":"value3"}
        
        class InstanceLoader {
            static getInstance<T>(context: Object,className :string, data: Object) : T {
                var instance = Object.create(context[className].prototype);
                Object.keys(data).forEach(x=>{
                    instance[x] = data[x];
                });
                return <T> instance;
            }
        }
        
        class MyDictionary {
        }
        
        let example = InstanceLoader.getInstance<MyDictionary>(window,'MyDictionary',data);
        console.log(JSON.stringify(example));
        
        **Output: {"key":"value","key2":"value2","key3":"value3"}**
        

        【讨论】:

          猜你喜欢
          • 2015-05-31
          • 1970-01-01
          • 2017-03-22
          • 2019-03-23
          • 1970-01-01
          • 2020-07-03
          • 1970-01-01
          • 2021-04-10
          • 2020-02-16
          相关资源
          最近更新 更多