如何利用 Cake 构建脚本中的 JSON.Net?
How do utilize JSON.Net from Cake build script?
我想在 Cake 构建脚本中使用 json.net 序列化和反序列化 json,但不知道如何引用它。
引用 Newtonsoft JSON.Net 的最简单方法是通过 #addin 指令。示例,用法:
#addin packageid
因为它不是 "native" Cake 插件,您需要添加一个 using 到名称空间或使用您要使用的类型的完全限定名称。例如,将 using 放在构建脚本的顶部:
using Newtonsoft.Json;
或使用完全限定的类型名称:
Newtonsoft.Json.JsonConvert.SerializeObject(...)
除此之外就是 "regular" 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. It is documented here。它为标准功能提供别名方法,例如:
- 序列化
- 反序列化
只需添加以下内容即可将其包含在您的 Cake 脚本中:
#addin "Cake.Json"
我想在 Cake 构建脚本中使用 json.net 序列化和反序列化 json,但不知道如何引用它。
引用 Newtonsoft JSON.Net 的最简单方法是通过 #addin 指令。示例,用法:
#addin packageid
因为它不是 "native" Cake 插件,您需要添加一个 using 到名称空间或使用您要使用的类型的完全限定名称。例如,将 using 放在构建脚本的顶部:
using Newtonsoft.Json;
或使用完全限定的类型名称:
Newtonsoft.Json.JsonConvert.SerializeObject(...)
除此之外就是 "regular" 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. It is documented here。它为标准功能提供别名方法,例如:
- 序列化
- 反序列化
只需添加以下内容即可将其包含在您的 Cake 脚本中:
#addin "Cake.Json"