如何利用Cake构建脚本中的JSON.Net?

时间:2016-08-03 07:46:16

标签: c# json.net cakebuild

我想在Cake构建脚本中使用json.net序列化和反序列化json,但坚持如何引用它。

2 个答案:

答案 0 :(得分:7)

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

#addin packageid

因为它不是"本地人" Cake addin您需要在命名空间中添加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指令的一个非常强大的部分。这意味着您可以从预发布或私有订阅源中获取程序集。

答案 1 :(得分:3)

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

  • 序列化
  • 反序列化

只需添加以下内容即可将其包含在Cake脚本中

#addin "Cake.Json"