編集画面生成に使用する。
以下のBeanをリストで保持する(List<Control>)。
List<Control>
List<Control>
Control
[
{
"Type": 1,
"Edit": {
"Caption": "test1",
"Editable": true
},
"Value": {
"Text": "test1"
}
},
{
"Type": 2,
"Edit": {
"Caption": "img1",
"Editable": true
},
"Value": {
"ImageId": 100
}
},
{
"Type": 3,
"Edit": {
"Caption": "group1"
},
"Value": {
"Group": [
{
"Type": 1,
"Edit": {
"Caption": "test2",
"Editable": true
},
"Value": {
"Text": "test2"
}
},
{
"Type": 2,
"Edit": {
"Caption": "img2",
"Editable": true
},
"Value": {
"ImageId": 200
}
}
]
}
}
]
namespace JSON
{
public enum EType { Text = 1, Image, Group};
[JsonObject("Edit")]
public class CEdit
{
[JsonProperty("Caption")]
public string Caption = "";
[JsonProperty("Editable")]
public bool Editable = false;
}
[JsonObject("Value")]
public class CValue
{
[JsonProperty("Text")]
public string Text { get; set; }
[JsonProperty("ImageId")]
public int ImageId { get; set; }
[JsonProperty("Group")]
public List<Control> Group { get; set; }
}
[JsonObject("Ctrl")]
public class Control
{
[JsonProperty("Type")]
public EType Type = EType.Text;
[JsonProperty("Edit")]
public CEdit Edit = new CEdit();
[JsonProperty("Value")]
public CValue Value = new CValue();
}
public class Program
{
static void Main(string[] args)
{
JSON.Control ctrl = null;
List<JSON.Control> lstctrl1 = new List<JSON.Control>();
List<JSON.Control> lstctrl2 = new List<JSON.Control>();
//---
ctrl = new JSON.Control();
ctrl.Type = EType.Text;
ctrl.Edit.Caption = "test1";
ctrl.Edit.Editable = true;
ctrl.Value.Text = "test1";
lstctrl1.Add(ctrl);
//---
ctrl = new JSON.Control();
ctrl.Type = EType.Image;
ctrl.Edit.Caption = "img1";
ctrl.Edit.Editable = true;
ctrl.Value.ImageId = 100;
lstctrl1.Add(ctrl);
//---
ctrl = new JSON.Control();
ctrl.Type = EType.Group;
ctrl.Edit.Caption = "group1";
ctrl.Edit.Editable = false;
ctrl.Value.Group = lstctrl2;
lstctrl1.Add(ctrl);
//---
ctrl = new JSON.Control();
ctrl.Type = EType.Text;
ctrl.Edit.Caption = "test2";
ctrl.Edit.Editable = true;
ctrl.Value.Text = "test2";
lstctrl2.Add(ctrl);
//---
ctrl = new JSON.Control();
ctrl.Type = EType.Image;
ctrl.Edit.Caption = "img2";
ctrl.Edit.Editable = true;
ctrl.Value.ImageId = 200;
lstctrl2.Add(ctrl);
string json = JsonConvert.SerializeObject(lstctrl1, Formatting.Indented, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore});
Console.WriteLine(json);
lstctrl1 = JsonConvert.DeserializeObject<List<JSON.Control>>(json);
}
}
}