如何在Cake构建脚本中使用JSON.Net?

4
我想在Cake构建脚本中使用Json.net来序列化和反序列化json,但是不知道如何引用它。

1
你能添加一个 [mcve] 吗?或者至少告诉我你通常是在哪里/如何引用东西。 - rene
2个回答

10
通过#addin指令是引用Newtonsoft JSON.Net最简单的方式。例如,使用方法: #addin packageid 由于它不是“本地”Cake addin,您需要向命名空间添加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指令非常强大的一部分。这意味着您可以从预发布或私有源获取程序集。

1
运行得很顺利,这正是我一直在寻找的!谢谢 Mattias! - user6671157

3

另一种解决方案可能是使用 Cake.Json 插件。这里有相关文档 链接。它提供了标准功能的别名方法,例如:

  • 序列化
  • 反序列化

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

#addin "Cake.Json"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接