DataContractJsonSerializerでList<T>をシリアライズ・デシリアライズする。

{
  "TEST": [
    {
      "name": "aaa",
      "hoge": "bbb",
      "foo": "ccc"
    },
    {
      "name": "ddd",
      "hoge": "eee",
      "foo": "fff"
    },
    {
      "name": "ggg",
      "hoge": "hhh",
      "foo": "iii"
    }]
}

こういうJSONがある。
まずこれが正しいのかチェックした
lab.syncer.jp
f:id:katakanan:20180603163359p:plain
OK

次にこれを突っ込むクラスを作るが、以下を利用
json2csharp.com
generateを押す.

public class TEST
{
    public string name { get; set; }
    public string hoge { get; set; }
    public string foo { get; set; }
}

public class RootObject
{
    public List<TEST> TEST { get; set; }
}

今回はC++/CLIで行ったので
これを少し書き換えて、

#pragma once
using namespace System;
using namespace System::Runtime::Serialization;
using namespace System::Runtime::Serialization::Json;

[DataContract]
ref class TEST
{
public:
	[DataMember]
	String^ name;

	[DataMember]
	String^ hoge;

	[DataMember]
	String^ foo;

};

[DataContract]
ref class RootObject
{
public:
	[DataMember]
	System::Collections::Generic::List<TEST^>^ test;
};

といった感じに。

書き出すとき

読み出すとき