1

Dictionary< String, Dictionary< String, String > > を格納できるポイントまでシリアライズし、後でデシリアライズします。私はかなりの量のグーグルを実行しましたが、.NET 4.5 と完全に互換性のあるクラスまたは関数を見つけることができません。

4

4 に答える 4

2

すぐJavaScriptSerializerに使用できるものは、辞書に対応できるはずです。また、非常にコンパクトな出力が得られるはずです。

var source = new Dictionary<string, Dictionary<string, string>>
{
    { "one", new Dictionary<string, string> { { "a", "1a"}, { "b", "1b" } } },
    { "two", new Dictionary<string, string> { { "a", "2a"}, { "b", "2b" } } }
};

var serializer = new JavaScriptSerializer();

// This gives {"one":{"a":"1a","b":"1b"},"two":{"a":"2a","b":"2b"}}
string serialized = serializer.Serialize(source);

// This gives a clone of the original dictionary.
var deserialized = serializer.Deserialize
    <Dictionary<string, Dictionary<string, string>>>(serialized);
于 2012-10-31T08:38:48.407 に答える
1

解決策はJSON.NETを使用することであることがわかりました

public String Serialize(Dictionary<int, Dictionary<String, String>> all)
        {

            String abc = JsonConvert.SerializeObject(all, Formatting.None, new JsonSerializerSettings
                        {
                            TypeNameHandling = TypeNameHandling.Objects,
                            TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
                        });
            return abc;
        }

         public Dictionary<int, Dictionary<String, String>> DeSerialize(String text)
         {

             Dictionary<int, Dictionary<String, String>> abc;
             abc = JsonConvert.DeserializeObject<Dictionary<int, Dictionary<String, String>>>(text, new JsonSerializerSettings
             {
                 TypeNameHandling = TypeNameHandling.Objects,
                 TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple,
             });
             return abc;
         }
于 2012-10-31T17:02:03.793 に答える
0

SerializableDictionaryを見ることができます

于 2012-10-31T08:37:21.693 に答える
0

以下を使用する必要があります。これにより、人生が楽になります。

ストレージヘルパー

または使用

WinRT XAML ツールキット

于 2012-10-31T10:00:45.840 に答える