c# Newtonsoft.Json 常用方法总结

1 实体类的 Json 序列化和反序列化

我们以如下的 Person 类举例,其中包含了常用的数据类型:

public class Person
{
 public int ID { get; set; }

 public string Name { get; set; }

 public DateTime Birthday { get; set; }

 public bool IsVIP { get; set; }

 public float Account { get; set; }

 public string[] Favorites { get; set; }

 public string Remark { get; set; }
}

创建一个 Person 实例:

Person person = new Person
{
 ID = 1,
 Name = "张三",
 Birthday = DateTime.Parse("2000-01-02"),
 IsVIP = true,
 Account = 12.34f,
 Favorites = new string[] { "吃饭", "睡觉" }
};

1.1 Json 序列化

返回不缩进的 Json 字符串

JsonConvert.SerializeObject(person);

{"ID":1,"Name":"张三","Birthday":"2000-01-02T00:00:00","IsVIP":true,"Account":12.34,"Favorites":["吃饭","睡觉"],"Remark":null}

返回缩进的 Json 字符串

JsonConvert.SerializeObject(person, Formatting.Indented);

{
 "ID": 1,
 "Name": "张三",
 "Birthday": "2000-01-02T00:00:00",
 "IsVIP": true,
 "Account": 12.34,
 "Favorites": [
  "吃饭",
  "睡觉"
 ],
 "Remark": null
}

1.2 将不缩进的 JSON 字符串转成缩进形式

private string JsonIndentation(string str)
{
 //string str = JsonConvert.SerializeObject(entity);
 JsonSerializer serializer = new JsonSerializer();
 TextReader tr = new StringReader(str);
 JsonTextReader jtr = new JsonTextReader(tr);
 object obj = serializer.Deserialize(jtr);
 if (obj != null)
 {
  StringWriter textWriter = new StringWriter();
  JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
  {
   Formatting = Formatting.Indented,
   Indentation = 4,
   IndentChar = ' '
  };
  serializer.Serialize(jsonWriter, obj);
  return textWriter.ToString();
 }
 else
 {
  return str;
 }
}

或者:

private string JsonIndentation(string json)
{
 JObject obj = JObject.Parse(json);
 return obj.ToString();
}

1.3 其他设置

JsonSerializerSettings settings = new JsonSerializerSettings();
// 设置日期格式
settings.DateFormatString = "yyyy-MM-dd";
// 忽略空值
settings.NullValueHandling = NullValueHandling.Ignore;
// 缩进
settings.Formatting = Formatting.Indented;

JsonConvert.SerializeObject(person, settings);

返回:

{
 "ID": 1,
 "Name": "张三",
 "Birthday": "2000-01-02",
 "IsVIP": true,
 "Account": 12.34,
 "Favorites": [
 "吃饭",
 "睡觉"
 ]
}

1.4 Json 反序列化

JsonConvert.DeserializeObject<Person>(json);

2 JObject 使用

2.1 创建对象

JObject obj = new JObject();
obj.Add("ID", 1);
obj.Add("Name", "张三");
obj.Add("Birthday", DateTime.Parse("2000-01-02"));
obj.Add("IsVIP", true);
obj.Add("Account", 12.34f);
// 创建数组
JArray array = new JArray();
array.Add(new JValue("吃饭"));
array.Add(new JValue("睡觉"));
obj.Add("Favorites", array);
obj.Add("Remark", null);

2.2 JObject 中添加数组

上例中的代码可以简化为:

JArray array = new JArray("吃饭", "睡觉");

2.3 从 Json 字符串创建 JObject

string json = "{\"ID\":1,\"Name\":\"张三\",\"Birthday\":\"2000-01-02T00:00:00\",\"IsVIP\":true,\"Account\":12.34,\"Favorites\":[\"吃饭\",\"睡觉\"],\"Remark\":null}";

JObject obj = JObject.Parse(json);

2.4 从 Entity 创建 JObject

JObject obj = JObject.FromObject(person);

用匿名对象创建 JObject

JObject obj = JObject.FromObject(new { name = "jack", age = 18 });

//显示
{
 "name": "jack",
 "age": 18
}

用初始化器

JObject obj = new JObject()
{
 { "name", "jack" },
 { "age", 18 }
};

2.5 获取值

int id;
if (obj["ID"] != null)
 id = obj["ID"].Value<int>();

2.6 获取数组

Newtonsoft.Json.Linq 不支持直接获取数组,但是可以获取 List,然后再转化为数组。

string[] favorites;
if (obj["Favorites"] != null)
 favorites = obj["Favorites"].Value<List<string>>().ToArray();

以上就是c# Newtonsoft.Json 常用方法总结的详细内容,更多关于c# Newtonsoft.Json的资料请关注我们其它相关文章!

(0)

相关推荐

  • c#添加Newtonsoft.Json包的操作

    C#使用json 点击工具 - NuGet包管理器 - 程序包管理控制台,输入下面命令: Install-Package Newtonsoft.Json 即可使用Newtonsoft.Json 包进行json操作 PM> Install-Package Newtonsoft.Json 正在尝试收集与目标为".NETFramework,Version=v4.0"的项目"QiniuTests"有关的包"Newtonsoft.Json.11.0.2&quo

  • C# Newtonsoft.Json 的使用说明

    我就废话不多说啦,大家还是直接看代码吧~ byte[] bUserInfoSearch = new byte[1024 * 10]; //10kb大小 Marshal.Copy(lpBuffer, bUserInfoSearch, 0, bUserInfoSearch.Length); string strUserInfoSearch = System.Text.Encoding.UTF8.GetString(bUserInfoSearch); CUserInfoSearch m_JsonUse

  • C# Newtonsoft.Json 解析多嵌套json 进行反序列化的实例

    我就废话不多说啦,大家还是直接看代码吧~ [ { "orderNo": "3213123123123", "time": "2016-09-09 12:23:33", "orderStatus": "1", "freeShipping": true, "fullCut": 20, "originalCost": 340, &qu

  • c# Newtonsoft.Json 常用方法总结

    1 实体类的 Json 序列化和反序列化 我们以如下的 Person 类举例,其中包含了常用的数据类型: public class Person { public int ID { get; set; } public string Name { get; set; } public DateTime Birthday { get; set; } public bool IsVIP { get; set; } public float Account { get; set; } public s

  • 在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍

    全局引用 using Newtonsoft.Json; using Newtonsoft.Json.Converters; //把Json字符串反序列化为对象 目标对象 = JavaScriptConvert.DeserializeObject(JSON字符串, typeof(目标对象)); //把目标对象序列化为Json字符串 stringJson字符串 = JavaScriptConvert.SerializeObject(目标对象); 1.引用Newtonsoft.Json.dll: 2.

  • newtonsoft.json解析天气数据出错解决方法

    今天用NewtonSoft.JSon解析一个天气数据,数据格式如: 复制代码 代码如下: {"status":1,"detail":"\u6570\u636e\u83b7\u53d6\u6210\u529f","data":[[{"date":"2014-01-01","dis_id":"1119","dis_name":&qu

  • jQuery操作json常用方法示例

    本文实例讲述了jQuery操作json常用方法.分享给大家供大家参考,具体如下: 在项目中经常会用到获取json中的某个值,或者动态的创建一个json对象,今天简单的做了一个通用的js /** * json工具 */ var JsonUtil = (function(){ return { /** * 获取json中的单个值 */ getValue:function(jsonObject,name){ var value = ""; $.each(jsonObject,function

  • JS操作JSON常用方法(10w阅读)

    一.概念简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包. 在JSON中,有两种结构:对象和数组. 1.对象 var packJson = {"name":"Liza", "password":"1

  • C# newtonsoft.json中文乱码问号的解决方案

    目录 C# newtonsoft.json中文乱码问号 C# NewtonJson使用技巧 C# newtonsoft.json中文乱码问号 发送方在序列化json时这样写,比如将gameinfo类序列化成json: string jsonstr=JsonConvert.SerializeObject(gameinfo, new JsonSerializerSettings() { StringEscapeHandling = StringEscapeHandling.EscapeNonAsci

  • C#使用Newtonsoft.Json中的JObject对象

    案例1 json {     "Name": "Jack",     "Age": 34,     "Colleagues": [{         "Name": "Tom",         "Age": 44     }, {         "Name": "Abel",         "Age":

随机推荐