前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Newtonsoft.Json.Linq 常用方法总结

Newtonsoft.Json.Linq 常用方法总结

作者头像
丹枫无迹
发布2019-10-14 16:45:47
2.7K0
发布2019-10-14 16:45:47
举报
文章被收录于专栏:学无止境学无止境

目录

1、Entity to Json

1.1、准备工作

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

代码语言:javascript
复制
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 实例:

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

1.2、Entity to Json

返回不缩进的 Json 字符串
代码语言:javascript
复制
JsonConvert.SerializeObject(person)

返回:

代码语言:javascript
复制
{"ID":1,"Name":"张三","Birthday":"2000-01-02T00:00:00","IsVIP":true,"Account":12.34,"Favorites":["吃饭","睡觉"],"Remark":null}
返回缩进的 Json 字符串
代码语言:javascript
复制
JsonConvert.SerializeObject(person, Formatting.Indented);

返回:

代码语言:javascript
复制
{
    "ID": 1,
    "Name": "张三",
    "Birthday": "2000-01-02T00:00:00",
    "IsVIP": true,
    "Account": 12.34,
    "Favorites": [
        "吃饭",
        "睡觉"
    ],
    "Remark": null
}
Json 字符串缩进
代码语言:javascript
复制
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;
    }
}

或者:

代码语言:javascript
复制
private string JsonIndentation(string json)
{
    JObject obj = JObject.Parse(json);
    return obj.ToString();
}
其他设置
代码语言:javascript
复制
JsonSerializerSettings settings = new JsonSerializerSettings();
// 设置日期格式
settings.DateFormatString = "yyyy-MM-dd";
// 忽略空值
settings.NullValueHandling = NullValueHandling.Ignore;
// 缩进
settings.Formatting = Formatting.Indented;

JsonConvert.SerializeObject(person, settings);

返回:

代码语言:javascript
复制
{
  "ID": 1,
  "Name": "张三",
  "Birthday": "2000-01-02",
  "IsVIP": true,
  "Account": 12.34,
  "Favorites": [
    "吃饭",
    "睡觉"
  ]
}

1.3、Json to Entity

代码语言:javascript
复制
JsonConvert.DeserializeObject<Person>(json);

2、Linq To Json

2.1、创建对象

代码语言:javascript
复制
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、从 Json 字符串创建 JObject

代码语言:javascript
复制
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.3、从 Entity 创建 JObject

代码语言:javascript
复制
JObject obj = JObject.FromObject(person);
用匿名对象创建 JObject
代码语言:javascript
复制
JObject obj = JObject.FromObject(new { name = "jack", age = 18 });

显示:

代码语言:javascript
复制
{
  "name": "jack",
  "age": 18
}

2.2、获取值

代码语言:javascript
复制
int id;
if (obj["ID"] != null)
    id = obj["ID"].Value<int>();
获取数组

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

代码语言:javascript
复制
string[] favorites;
if (obj["Favorites"] != null)
    favorites = obj["Favorites"].Value<List<string>>().ToArray();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Entity to Json
    • 1.1、准备工作
      • 1.2、Entity to Json
        • 返回不缩进的 Json 字符串
        • 返回缩进的 Json 字符串
        • 其他设置
      • 1.3、Json to Entity
      • 2、Linq To Json
        • 2.1、创建对象
          • 2.2、从 Json 字符串创建 JObject
            • 2.3、从 Entity 创建 JObject
              • 用匿名对象创建 JObject
            • 2.2、获取值
              • 获取数组
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档