如果我有以下结构中的数据表。
HostelName FloorName FlatName Occupied Vacant Building One Floor A A 2 2 Building One Floor A B 0 4 Building One Floor A C 0 4 Building One Floor A D 0 4 Building One Floor A E 0 4 Building One Floor B F 0 4 Building One Floor B G 0 4 Building One Floor B H 0 4 Building One Floor B I 0 4 Building One Floor B J 0 4
我想将它序列化为一个JSON对象,其中HostelName,FloorName& FlatName列是JSON对象中的节点,如:
{
"Building One": {
"Floor A": {
"A": {
"Occupied": "2",
"Vacant": "2"
},
"B": {
"Occupied": "0",
"Vacant": "4"
},
"C": {
"Occupied": "0",
"Vacant": "4"
},
"D": {
"Occupied": "0",
"Vacant": "4"
},
"E": {
"Occupied": "0",
"Vacant": "4"
}
},
"Floor B": {
"F": {
"Occupied": "0",
"Vacant": "4"
},
"G": {
"Occupied": "0",
"Vacant": "4"
},
"H": {
"Occupied": "0",
"Vacant": "4"
},
"D": {
"Occupied": "0",
"Vacant": "4"
},
"I": {
"Occupied": "0",
"Vacant": "4"
}
}
}
};
请帮我解决。
答案 0 :(得分:1)
您所要做的就是使用自定义JSONConverter(如果使用JSON.NET),请了解here (JSON.NET Implementing Custom Serialization)。
答案 1 :(得分:0)
除非每层楼的房间数量有限,否则我会把房间排成一排。地板也一样。如果你以后要解析它会更有意义,并且更容易使用。
要编写自定义JSON,您可以使用JSON.net的JsonWriter。然后你就可以这样写:
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
using (JsonWriter writer = new JsonTextWriter(sw))
{
writer.Formatting = Formatting.Indented;
writer.WriteStartObject();
writer.WritePropertyName("Building One");
writer.WriteStartObject();
writer.WritePropertyName("Floor A");
writer.WriteStartObject();
writer.WritePropertyName("A");
writer.WriteStartObject();
writer.WritePropertyName("Occupied");
writer.WriteValue("2");
writer.WritePropertyName("Vacant");
writer.WriteValue("2");
writer.WriteEnd();
writer.WritePropertyName("B");
writer.WriteStartObject();
writer.WritePropertyName("Occupied");
writer.WriteValue("0");
writer.WritePropertyName("Vacant");
writer.WriteValue("4");
writer.WriteEnd();
writer.WriteEndObject();
}
或使用JTokens
JObject o = new JObject(
new JProperty("Building One",
new JObject(
new JProperty("Floor A",
new JObject(
new JProperty("A",
new JObject(
new JProperty("Occupied", "2"),
new JProperty("Vacant", "2"))),
new JProperty("B",
new JObject(
new JProperty("Occupied", "0"),
new JProperty("Vacant", "4"))))))));