我正在尝试创建一个不基于任何类或对象的JSON响应。它在本质上是非常有活力的。因此,我开始使用Newtonsoft.Json.Linq中的JObject
。虽然它生成了正确的构造,但它不会用双引号封装值。如何在值周围强制使用这些双引号?
以下是我用于测试的一小段代码:
var job = new JObject();
job.Add(new JProperty("name", "filip"));
string nm = "Rob";
job.Add(new JProperty("name2", nm));
job.Add(new JProperty("name4", new JValue("Samantha")));
结果:
{"name":filip,"name2":Rob,"name4":Samantha}
我所期望的:
{"name":"filip","name2":"Rob","name4":"Samantha"}
下面是一个完整的例子:
public class DynJSonService : NancyModule
{
public DynJSonService()
{
Get["/dynjson"] = _ =>
{
var job = new JObject();
job.Add(new JProperty("name", "filip"));
string nm = "Rob";
job.Add(new JProperty("name2", nm));
job.Add(new JProperty("name4", new JValue("Samantha")));
return job;
};
}
}
当冲浪到url时,通过浏览器会得到以下响应:localhost:4439/FilipsApps/dynjson
{"name":filip,"name2":Rob,"name4":Samantha}
Nancy默认在内部使用SimpleJson
序列化程序,它不知道如何正确处理JObject
和JProperty
。如果您想使用这些,您应该将Nancy配置为使用Json.Net(也称为Newtonsoft.Json(序列化程序。有一个Nancy.Serialization.JsonNet
NuGet包。安装该软件包后,它应该可以正常工作。如果您需要自定义Json.Net序列化程序的设置,那么readme.md中有相应的说明。