添加JSON Data到已经存在的JSON文件中

早上在学习《Post model至Web Api创建或是保存数据http://www.cnblogs.com/insus/p/4343833.html ,如果你第二添加时,json文件得到的数据只能是单笔记录且是最新的。

那需要怎样把新添加的json数据附加至已经存在的数据中去?本篇Insus.NET就是想实现此功能。

想法是先读取json文件的数据转换为数据集存放在内存中,新添加的数据再附加上去,然后再把内存的数据集序列化保存为json文件即可。

上面代码示例中,有3大部分,第一部分是读取文件中原有数据:

if (System.IO.File.Exists(existFilePhysicalPath))
            {
                using (System.IO.StreamReader sr = new System.IO.StreamReader(existFilePhysicalPath))
                {
                    JsonTextReader jtr = new JsonTextReader(sr);
                    JsonSerializer se = new JsonSerializer();
                    object obj = se.Deserialize(jtr, typeof(List<Order>));
                    orders = (List<Order>)obj;
                }
            }

其实这部分,简单一句代码也可以:

orders = JsonConvert.DeserializeObject<List<Order>>(System.IO.File.ReadAllText(existFilePhysicalPath));

第二部分是将内存中的List<Order>数据序列化之后,存为json文件:

 using (FileStream fs = File.Open(newFilePhysicalPath, FileMode.CreateNew))
            using (StreamWriter sw = new StreamWriter(fs))
            using (JsonWriter jw = new JsonTextWriter(sw))
            {
                jw.Formatting = Formatting.Indented;
                JsonSerializer serializer = new JsonSerializer();
                serializer.Serialize(jw, orders);
            }

第三部分是把新创建的文件重命名为旧文件名:

if (System.IO.File.Exists(existFilePhysicalPath))
            {
                File.Delete(existFilePhysicalPath);
            }
            if (System.IO.File.Exists(newFilePhysicalPath))
            {
                System.IO.File.Move(newFilePhysicalPath, existFilePhysicalPath);
            }

在Orders目录中,新创建一个html网页SaveJsonToExistFile.html:

上面收集合的jQuery代码,可以参考下面:

Insus.NET所做的练习,一般最后少不了动画演示:

时间: 2024-11-06 09:30:18

添加JSON Data到已经存在的JSON文件中的相关文章

VB.NET 将JSON格式的字符串保存到XML文件中

1.关于本文 这几天打算写一个工具类JsonXmlHelper,用来进行用XML来保存JSON格式文件的工作.该工具类中要实现2个最主要的函数: 1)将JSON格式的内容写入到地址为address的XML中:WriteJsonToXml 2)把函数1中构造的XML文件恢复成JSON格式文档:RecoverJsonFromXml 函数1的实现将在本文中给出,函数2的实现将在以后发表的博文中给出 2.代码说明 1)添加引用:Newtonsoft.Json.dll 2)导入库 'JSON解析相关函数,

如何把Json格式字符写进text文件中

本篇一步一步学习怎样把显示于网页的json格式的字符串写进text文件中,并保存起来.学习到创建model, Entity, 序列化List<object>转换为json,显示于网页上.然后是把这些json字符串传至控制器的方法,写text文件并保存. 准备数据对象,创建model: 接下来创建Entity,数据实体,数据可以是从文件,数据库或是其它.下面的数据是Insus.NET写成静态.因此上例中只是演示而已. ASP.NET MVC程序开发,控制器是很不了的.我们创建一个控制器,今天已经

Google Volley: How to send a POST request with Json data?

sonObjectRequest actuallyaccepts JSONObject as body. From http://arnab.ch/blog/2013/08/asynchronous-http-requests-in-android-using-volley/ final String url = "some/url"; final JSONObject jsonBody = /* ... */; new JsonObjectRequest(url, jsonBody,

PHP convet class to json data

/********************************************************************* * PHP convet class to json data * 说明: * 突然想使用class自动转换为json数据,这样的代码可扩展性会好一点, * 只需要修改class的属性就能够达到最终json数据输出,不过有遇到class中 * 初始化class变量需要在构造函数中初始化的的问题. * * 2017-8-11 深圳 龙华樟坑村 曾剑锋 ***

键值对参数转换为Jquery json data参数

键值对:var postData = new List<KeyValuePair<string, string>>();postData.Add(new KeyValuePair<string, string>("a", "1"));postData.Add(new KeyValuePair<string, string>("b", "2"));postData.Add(new

jQuery解析JSON出现SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data 我在使用$.parseJSON解析后台返回的JSON的数据时,出现了这样的错误,我还以为返回的JSON格式出现了错误,因为JSON要求格式非常严格.最后发现JSON格式没有太明显的格式错误,我使用fastJSON来生成的JSON格式数据,原来是因为数据已经是一个JavaScript对象了,所以在进行解析就会出错了 我直接将这段数据al

json data 解析demo

json data: demo: JsonObject jsonObject= JsonHandle.getAsJsonObject(city_dataInfo).get("data").getAsJsonObject().get("cityList").getAsJsonObject().get("items").getAsJsonObject(); Set<Entry<String, JsonElement>> ent

SyntaxError: JSON.parse: bad control character in string literal at line 1 column 16 of the JSON data

JSON.parse转化Json字符串时出现:SyntaxError: JSON.parse: bad control character in string literal at line 1 column 16 of the JSON data 测试代码: JSON.parse("{\"Result\":\"bhbh\thuhuha\"}") 罪魁祸首:\t导致

directly receive json data from javascript in mvc

if you send json data to mvc,how can you receive them and parse them more simply? you can do it like this: latestData = []; $('.save').click(function () { $('.content tr').each(function () { var item = { id:null,date: '', weekday: '', holiday: ''}; l