【发布时间】:2017-01-16 04:35:31
【问题描述】:
如果我使用 Json.Net,字典被序列化为:
{
"key": "value",
"key2": "value2",
...
}
如何将其转换为 Typescript 对象? 我最喜欢一个 typeof 值的数组
【问题讨论】:
标签: javascript c# json typescript json.net
如果我使用 Json.Net,字典被序列化为:
{
"key": "value",
"key2": "value2",
...
}
如何将其转换为 Typescript 对象? 我最喜欢一个 typeof 值的数组
【问题讨论】:
标签: javascript c# json typescript 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;
}
【讨论】:
由于您提供的代码和解释有限,应该是:
interface MyJsonResponse {
key: string;
key2: string;
...
}
let json: MyJsonResponse = getResponse(); // {"key":"value","key2":"value2",...}
【讨论】:
这是为 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"}**
【讨论】: