如果我有以下结构的数据表.
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"
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
请帮我解决一下.
除非每层楼的房间数量有限,否则我会将房间做成数组。地板也是如此。如果您稍后要解析它,它会更有意义并且更容易使用。
要编写自定义 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();
}
Run Code Online (Sandbox Code Playgroud)
或者使用 JToken
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"))))))));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |