C#保存JSON与所需使用的格式Web.Helpers
问题描述:
我节省了JSON作为这样一个系统:C#保存JSON与所需使用的格式Web.Helpers
public static void saveMap()
{
string toSave = Json.Encode(Map.Universe);
using (StreamWriter sw = new StreamWriter(dataDirectory + "Map.json"))
{
sw.Write(toSave);
}
}
这并不目前保存我希望它的格式。目前,它可以节省这样的:
{
"Planets": [{
"Name": "GY-96547",
"Location": {
"x": 0,
"y": 0,
"type": "P",
"galaxyString": "FT-22419"
}
}],
"Station": {
"Name": "LT-15743",
"Location": {
"x": 0,
"y": 0,
"type": "S",
"galaxyString": "FT-22419"
}
},
"Name": "FT-22419",
"Location": {
"x": 0,
"y": 0,
"type": "G"
}}
我想以另一种方式保存,其中我的地图加载功能可以明白。我将能够轻松实施解决方案,我只需要知道它。
在Web.Helpers中有一种方法可以将JSON与我需要的格式保存在一起,基本上 - 不是将文件保存为“颠倒”,还有一种方法可以将它保存在列表中。
额外的信息,以防万一你想知道我需要将其保存在(目前它加载到)格式:
{
"Galaxy": {
"Name": "FT-22419",
"Location": {
"x": 0,
"y": 0,
"type": "G"
},
"Station": {
"Name": "LT-15743",
"Location": {
"x": 0,
"y": 0,
"type": "S",
"galaxyString": "FT-22419"
}
},
"Planets": [
{
"Name": "GY-96547",
"Location": {
"x": 0,
"y": 0,
"type": "P",
"galaxyString": "FT-22419"
}
}
]}}
要求的定义:
[Serializable]
public class Galaxy
{
public string Name { get; set; }
public List<Planet> Planets = new List<Planet>();
public Station Station;
public Location Location { get; set; }
public Galaxy() { }
public static string ListContents(Galaxy g)
{
int index = Map.Universe.IndexOf(g);
string ps = "Planets:";
string st = "|Station:" + Map.Universe[index].Station.Name;
foreach (Planet p in Map.Universe[index].Planets)
{
if (Map.Universe[index].Planets.IndexOf(p) != Map.Universe[index].Planets.Count)
{
ps += p.Name + ", ";
}
else
{
ps += p.Name;
}
}
return (ps + st);
}
}
地图
[Serializable]
public class Map
{
public static List<Galaxy> Universe = new List<Galaxy>(); }
行星
[Serializable]
public class Planet
{
public string Name { get; set; }
public Location Location { get; set; }
}
和Station是一样的,只是改名了。
答
您不能(也不应该)依赖JSON中的元素顺序。根据规范(http://www.json.org/),他们是无序的。为了排序,你需要把东西放入一个数组或类似的东西。
对于分组,您应该在序列化之前将要分组到一起的元素添加到列表中。
+0
在JSON文件中排序并不重要,重要的是我希望“星系”位于JSON文件中的数组中。我的代码中的星系有一个名字,一个行星列表,单站和一个位置。我的代码中的“宇宙”是一个“星系”列表。一切都在列表中,我只需要知道如何将它保存在一个更有组织的列表中,至少有一个标题。 –
什么是保存和如何确定的类型被序列化 - 它不只是格式化的东西。 – Plutonix
因此,如何将我的事实加我想 '{ “清单”:[{ “银河”:{' 添加吗? –
你能和我们分享你的班级定义吗?这可能是问题。 –