打字稿->从Json.net转换字典的内容

Posted

技术标签:

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

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


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

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

【问题讨论】:

【参考方案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"**

【讨论】:

以上是关于打字稿->从Json.net转换字典的内容的主要内容,如果未能解决你的问题,请参考以下文章

有像 as3 这样的打字稿字典吗?

在打字稿中获取字典/对象键作为元组

打字稿将数组转换为 JSON

比较字典元素打字稿[复制]

类型转换时的打字稿默认属性

打字稿:将标记的联合转换为联合类型