c# - 使用 StackService.Text 和 JSON 作为对象列表

标签 c# json servicestack servicestack-text

如有任何帮助,我们将不胜感激。

我正在尝试使用 StackService。文本和JSON以便获取对象列表,即每个对象都包含一个列表。

以下是类的定义:

[DataContract]
public class GroupingList
{
    [DataMember(Name = "id")]
    public int Id
    {
        get; set;
    }
    [DataMember(Name = "name")]
    public string Name
    {
        get; set;
    }
    [DataMember(Name = "form_field")]
    public string FormField
    {
        get;
        set;
    }

    [DataMember(Name = "groups")]
    public List<GroupingOptions> Groups
    {
        get; set;
    }
}

[DataContract]
public class GroupingOptions
{
    [DataMember(Name = "bit")]
    public string Bit
    {
        get; set;
    }
    [DataMember(Name = "name")]
    public string Name
    {
        get; set;
    }
    [DataMember(Name = "display_order")]
    public string DisplayOrder
    {
        get; set;
    }
    [DataMember(Name = "subscribers")]
    public int Subscribers
    {
        get; set;
    }
}

我正在使用“PostJsonToUrl()”方法,并接收以下字符串作为返回结果:

"\n[{\"id\":14101,\"name\":\"Accounting1\",\"form_field\":\"hidden\",\"display_order\":\"0\",\"groups\":[{\"bit\":\"1\",\"name\":\"Interest\",\"display_order\":\"1\",\"subscribers\":null},{\"bit\":\"2\",\"name\":\"Register\",\"display_order\":\"2\",\"subscribers\":null}]}]"

现在,当我尝试调用FromJson(List<GroupingList>)时方法,我收到以下异常:

Type definitions should start with a '{', expecting serialized type 'GroupingList', got string starting with: 
[{"id":14101,"name":"Accounting1","form_field":"h

谁能告诉我这个问题是否与“GroupingList”和“GroupingOptions”类的定义有关? 'PostJsonToUrl()' 的返回结果是一个列表(在本例中只有一个条目),其中包含另一个列表(有两个项目),所以我不明白为什么调用 FromJson(List) 失败。

非常感谢

最佳答案

问题是字符串开头的 \n 符号。您可以先将其删除,然后再反序列化 GroupingList

string result = "\n[{\"id\":14101,\"name\":\"Accounting1\",\"form_field\":\"hidden\",\"display_order\":\"0\",\"groups\":[{\"bit\":\"1\",\"name\":\"Interest\",\"display_order\":\"1\",\"subscribers\":0},{\"bit\":\"2\",\"name\":\"Register\",\"display_order\":\"2\",\"subscribers\":0}]}]";
result = result.Trim();
List<GroupingList> list = result.FromJson<List<GroupingList>>();

关于c# - 使用 StackService.Text 和 JSON 作为对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565496/

相关文章:

json - ExpressJs res.json : Can't set headers after they are sent

javascript - 如何优化 getYoutubeViews 函数以免超出每日 Youtube API 配额?

json - AS3 - 获取 JSON 数据的值

c# - MissingMethodException 全局.asax.cs

c# - 带有 ServiceStack/WebApi/MVC 操作的 AngularJS

c# - 编辑时的 ASP.NET MVC 远程验证逻辑

c# - "dotnet build"的 C#8 命令行编译器的最小安装

c# - PubSub 在 BookSleeve/Redis 中是如何工作的?

c# - "right"是什么方法可以在事件发生后将 C# 中的方法运行延迟一段时间,同时仍让原始线程运行?

c# - MassTransit - 等待所有事件完成,然后继续处理