通过Servicestack传递JSON

时间:2013-12-20 14:38:40

标签: json servicestack

我想给出一个JSON响应,其中一个字段只包含来自另一个源的JSON字符串。 (我正在使用PostGIS为一个功能返回一组GeoJSON字符串。)我已经验证了PostGIS使用正确的JSON进行响应,将其存储为字符串,然后将其传递给响应对象。

有什么办法可以让Servicestack响应对象直接将这段JSON直接包含在它的JSON中?

1 个答案:

答案 0 :(得分:3)

您应该使用RawSerializeFn,它允许您将自己的序列化方法附加到对象。

方法:

我会像这样创建一个名为RawJsonData的对象:

public class RawJsonData
{
    public string JsonData { get; set; }
    public RawJsonData(string json)
    {
        JsonData = json;
    }
}

然后在您的应用程序配置中调用此命令以附加自定义序列化程序:

JsConfig<RawJsonData>.RawSerializeFn = c=> c.JsonData;

它只是将JsonData中的数据作为原始Json返回。

用法:

在您的响应对象中,只需创建一个RawJsonData对象并填充它的值。然后,当序列化时,它将序列化原始数据。

public class MyResponse
{
    public RawJsonData MyJson { get; set; } // My contents will serialize raw!
    ...
    public string NormalStringValue { get; set; } // Normal string
    public int NormalIntValue { get; set; }
}

var response = new MyResponse { MyJson = new RawJsonData("YOUR RAW JSON HERE"), /* Other Values etc */ };

我希望有所帮助。