打字稿 - >从Json.net投下一个字典

时间:2016-09-08 09:44:19

标签: javascript c# json typescript json.net

如果我使用Json.Net,则将词典序列化为:

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

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

3 个答案:

答案 0 :(得分:5)

可以使用以下界面在TypeScript中正常表达词典:

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

你可以像这样使用它:

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

var value1 = example["key1"];

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

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

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

答案 1 :(得分:0)

使用有限的代码和解释,它应该是:

interface MyJsonResponse {
    key: string;
    key2: string;
    ...
}

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

答案 2 :(得分:0)

这是为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"}**