我想以这种格式将数据保存在本地 json 文件中:
[
{"Name":"sdafdsf","Password":"dsfads","FirstName":"fsdf","LastName":"dsfdafas"},
{"Name":"sddafdsf","Password":"dsfadds","FirstName":"fdsdf","LastName":"dsfdafasdfs"}
]
Run Code Online (Sandbox Code Playgroud)
我在控制器中使用它来序列化为 json 格式:
public ActionResult Index(demo obj)
{
String json = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
string path = Server.MapPath("~/app/");
//// Write that JSON to txt file,
//var read = System.IO.File.ReadAllText(path + "output.json");
System.IO.File.WriteAllText(path + "output.json", json);
return View();
}
Run Code Online (Sandbox Code Playgroud)
这是我的模型:
public class demo
{
public string Name { get; set; }
public string Password { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是我在 output.json 文件中得到了这个,而不是正确的 JSON 格式:
{"Name":"sdafdsf","Password":"dsfads","FirstName":"fsdf","LastName":"dsfdafas"}{"Name":"adfsdsfsafdsafasdfsdfsadf","Password":"dfsaasdsa","FirstName":"safd","LastName":"dfsafads"}
Run Code Online (Sandbox Code Playgroud)
如何以正确的格式保存数据?
这是正确的格式,如果您的意思是像数组一样需要它,则将对象添加到数组中,然后将其序列化:
public ActionResult Index(demo obj)
{
var array = new [] {obj};
String json = Newtonsoft.Json.JsonConvert.SerializeObject(array);
string path = Server.MapPath("~/app/");
//// Write that JSON to txt file,
//var read = System.IO.File.ReadAllText(path + "output.json");
System.IO.File.WriteAllText(path + "output.json", json);
return View();
}
Run Code Online (Sandbox Code Playgroud)
或者:
var list = new List<demo>();
list.Add(obj);
String json = Newtonsoft.Json.JsonConvert.SerializeObject(list);
Run Code Online (Sandbox Code Playgroud)
如果要始终将数据保留在数组中,则始终需要:
像这样:
public ActionResult Index(demo obj)
{
string path = Server.MapPath("~/app/");
var read = System.IO.File.ReadAllText(path + "output.json");
List<demo> lst = Newtonsoft.Json.JsonConvert.DeserializeObject<List<demo>>(read);
if (lst == null)
{
List<demo> _data = new List<demo>();
_data.Add(obj);
String json = Newtonsoft.Json.JsonConvert.SerializeObject(_data.ToArray());
System.IO.File.WriteAllText(path + "output.json", json);
}
else
{
lst.Add(obj);
String json = Newtonsoft.Json.JsonConvert.SerializeObject(lst);
System.IO.File.WriteAllText(path + "output.json", json);
}
return View();
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以通过分离一些部分来编写更清晰的代码。
| 归档时间: |
|
| 查看次数: |
3934 次 |
| 最近记录: |