打印稿→从Json.net投来的字典

本文关键字:字典 net Json 打印稿 | 更新日期: 2023-09-27 18:06:14

如果使用Json。Net字典序列化为:

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

如何将其强制转换为Typescript对象?我最想要的是typeof value的数组

打印稿→从Json.net投来的字典

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

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

你可以这样使用:

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

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

你可以把它弄得很复杂…甚至是通用的:

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

这是一种定义现有类并获取其实例的方法,适用于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"}**

你给出的有限代码和解释应该是:

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