我有一个RequestDto,让我们说A类Dto,它包含一个自定义的类型属性:
// C# code
public Class MyObject
{
public string A { get; set; }
public string B { get; set; }
}
public Class ADto
{
public List<MyObject> MO { get; set;}
}
当我尝试使用Json发送Dto时,Json对象看起来像这样:
{"MO":[{"A":"String","B":"a"},{"A":"String","B":"b"}]}
但我收到的对象将为null。 但是,如果我将Json字符串更改为:
{MO:[{A:"String",B:"a"},{A:"String",B:"b"}]}
我在对象上丢失了引号&#39;名字和它的工作原理。 Json的正确格式应该包括那些引号吗? 为什么会这样?
答案 0 :(得分:0)
将班级更改为
public Class MyObject
{
public string Mobile { get; set; }
public string Name { get; set; }
}
public Class ADto
{
public List<MyObject> MO { get; set;}
}
然后你的json应该是
{MO:[{Mobile:"0556604",Name:"Peter"},{Mobile:"4565466",Name:"John"}]}
答案 1 :(得分:0)
ServiceStack会对需要every property name to be quoted的有效JSON进行序列化和反序列化,但您可以说下面的文字有效:
{MO:[{A:"String",B:"a"},{A:"String",B:"b"}]}
然而,这不是有效的JSON,而是看起来像ServiceStack's JSV Format
您还没有提到您在哪里发送JSV格式或提供了原始HTTP请求(供我们使用),但我假设您正在使用邮差(在您的评论中提到)比您尝试在?QueryString
中发送JSON而不允许。
但ServiceStack确实支持发送complex object graphs on the QueryString using JSV。
由于您要发送复杂类型,因此 POST 请求 JSON 或 www-form-urlencoded 表单数据或者如果要在QueryString中传递它,则需要将其转换为JSV。
将来请包含原始HTTP请求,因为此问题缺少关于您更改JSON字符串的位置,您尝试使用它的方式或实际发送的内容的任何上下文,其中你发送给它等等 - 让人无法猜出是什么问题。