如何使用JSON.Net从Cake构建脚本

本文关键字:Cake 构建 脚本 Net 何使用 JSON | 更新日期: 2023-09-27 17:59:49

我想在Cake构建脚本中使用json.net对json进行序列化和反序列化,但仍停留在如何引用它上。

如何使用JSON.Net从Cake构建脚本

引用Newtonsoft JSON的最简单方法。Net是通过#addin指令。示例,用法:

#addin packageid

由于它不是一个"原生"Cake插件,您需要向命名空间添加using,或者使用您想要使用的类型的完全限定名称。例如,将using放在构建脚本的顶部:

using Newtonsoft.Json;

或使用完全限定的类型名称:

Newtonsoft.Json.JsonConvert.SerializeObject(...)

除此之外,它只是"常规"的C#

下面是一个完整的例子:

#addin "nuget:https://www.nuget.org/api/v2?package=Newtonsoft.Json"
using Newtonsoft.Json;
public class MissingPerson
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
var john = new MissingPerson {
    FirstName = "John",
    LastName = "Doe"
};

// Serialize and output MissingPerson as json
Information(
    "MissingPerson as json: {0}",
    JsonConvert.SerializeObject(john, Formatting.Indented)
    );
/*
 * This will output
 * MissingPerson as json: {
 *   "FirstName": "John",
 *   "LastName": "Doe"
 * }
 */

var jsonMissingPerson = "{'"FirstName'": '"Jane'",'"LastName'": '"Doe'"}";
// Deserialize json string to object
var jane = JsonConvert.DeserializeObject<MissingPerson>(jsonMissingPerson);
Information(
    "Missing Person from json:'r'n'tFirstName: {0}'r'n'tLastName: {1}",
    jane.FirstName,
    jane.LastName
    );
/*
 * This will output
 * Missing Person from json:
 *        FirstName: Jane
 *        LastName: Doe
 */

上面的示例还指定了要获取包的NuGet提要,这是#addin指令的一个非常强大的部分。这意味着您可以从预发布或私有提要中获取程序集。

另一种解决方案可能是使用Cake。Json Addin。此处对此进行了记录。它为标准功能提供了别名方法,例如:

  • 序列化
  • 反序列化

它可以包含在你的蛋糕脚本中,只需添加:

#addin "Cake.Json"