2016-09-08 8 views
4

から辞書をキャストものに私はJson.Netを使用する辞書は次のようにシリアライズされている場合:私は活字体オブジェクトにこれをキャストすることができますどのように活字体 - > Json.net

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

? 私はほとんどあなたはそれがあるべき与えた限られたコードと外植付typeof演算値

答えて

4

A辞書には、以下のインターフェースを使用して活字体で優雅に表現することができます。

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

あなたはこのようにそれを使用することができます:

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

var value1 = example["key1"]; 

一般的な辞書では、キーと値のペアを任意に収集できるため、正確な組み合わせを明示的に記述する必要はなく、ソースの辞書と非常に似ています。それは与えられたキーの値を持つことを約束しません)。

あなたが好きなように複雑な...あるいはジェネリックとしてそれを行うことができます。ここ

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

の配列のようにしたい:

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

let json: MyJsonResponse = getResponse(); // {"key":"value","key2":"value2",...} 
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"}**