c# - .Net 4.0 上的 ServiceStack.Text JSON 解析

标签 c# json servicestack

H 伙计们, 我正在尝试使用 ServiceStack.Text 进行 JSON 解析(在我见过的各种基准测试中,它似乎比 JSON.Net 表现更好)。但是我没有得到我期望的结果。我试图反序列化的类如下所示:

[DataContract]
public class RpcRequest<T>
{
    [JsonProperty("id")]
    [DataMember(Name="id")]
    public String Id;

    [JsonProperty("method")]
    [DataMember(Name="method")]
    public String Method;

    [JsonProperty("params")]
    [DataMember(Name="params")]
    public T Params;

    [JsonIgnore]
    [IgnoreDataMember]
    public Policy Policy;
}

我正在这样调用解析器

public static class Json
{
    public static T Deserialize<T>(string serialized)
    {
        return TypeSerializer.DeserializeFromString<T>(serialized);
    }
}
...
RpcRequest<Params> myRequeset = Json.Deserialize(packet);

但是我从那个没有设置任何值的调用中得到一个实例。即IdMethodParams 都是空的。我是否正确使用了这个 API?

最佳答案

好像ServiceStack不支持public fields,只支持public properties。因此,如果我将我的模型对象更改为以下内容,一切正常。

[DataContract]
public class RpcRequest<T>
{
    [JsonProperty("id")]
    [DataMember(Name="id")]
    public String Id { get; set; }

    [JsonProperty("method")]
    [DataMember(Name="method")]
    public String Method { get; set; }

    [JsonProperty("params")]
    [DataMember(Name="params")]
    public T Params { get; set; }

    [JsonIgnore]
    [IgnoreDataMember]
    public Policy Policy { get; set; }
}

请注意为每个属性添加了 getter 和 setter。

关于c# - .Net 4.0 上的 ServiceStack.Text JSON 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4668317/

相关文章:

javascript - 设置依赖选择框而不带其值

c# - 不同阶次贝塞尔曲线之间的转换

c# - XDocument 源的 XmlTextReader

sql - 在 SQL Server 2017 中修改多个 JSON 数组元素

javascript - jQuery map 不适用于 json 数组

javascript - 从插件发送消息到表单不适用于空值

json - sed 命令不选择值

dependency-injection - ServiceStack - 按名称注入(inject)存储库

c# - ServiceStack ResponseFilterAttribute 未被调用

c# - ServiceStack:如何处理错误?