nvlst在此处声明,然后填充
Dictionary<string, string> nvlst = new Dictionary<string, string>();
服务完成后,返回
JsonConvert.SerializeObject(nvlst, Formatting.Indented)
当客户端尝试反序列化时,会抛出错误
alst = JsonConvert.DeserializeObject<Dictionary<string, string>>(sb.ToString());
这是错误信息:
Error converting value "{
"Status": "SUCCESS:",
"CustomerId": "1",
"LicenseKey": "03bad945-37c0-4fa0-8126-fb4935df396d",
"MachineFingerPrint": "9B82-A8ED-3DE9-0D8C-26DD-2D83-C17F-C2E3",
"ExpirationDate": "11/18/2014",
"LicenseDate": "11/18/2013",
"LicenseGraceDay": "7",
"RequireRenewal": "Y",
"BaseUrl": "http://www.xxx-xxxxxxx.com",
"HelpUrl": "http://www.xxx-xxxxxxx.com/help",
"APIUrl": "http://localhost:63583/api/Ajax/runGenericMethodFromApp",
"CoName": "TestCustomer1",
"Addr1": "123 Any Street",
"Addr2": "",
"City": "Louisville",
"State": "KY",
"Zip": "40245"
}" to type 'System.Collections.Generic.Dictionary`2[System.String,System.String]'. Path '', line 1, position 704.
sb.ToString()的实际值低于
""{\r\n \"Status\": \"SUCCESS:\",\r\n \"CustomerId\": \"1\",\r\n \"LicenseKey\": \"03bad945-37c0-4fa0-8126-fb4935df396d\",\r\n \"MachineFingerPrint\": \"9B82-A8ED-3DE9-0D8C-26DD-2D83-C17F-C2E3\",\r\n \"ExpirationDate\": \"11/18/2014\",\r\n \"LicenseDate\": \"11/18/2013\",\r\n \"LicenseGraceDay\": \"7\",\r\n \"RequireRenewal\": \"Y\",\r\n \"BaseUrl\": \"http://www.xxx-xxxxxxx.com\",\r\n \"HelpUrl\": \"http://www.xxx-xxxxxxx.com/help\",\r\n \"APIUrl\": \"http://localhost:63583/api/Ajax/runGenericMethodFromApp\",\r\n \"CoName\": \"TestCustomer1\",\r\n \"Addr1\": \"123 Any Street\",\r\n \"Addr2\": \"\",\r\n \"City\": \"Louisville\",\r\n \"State\": \"KY\",\r\n \"Zip\": \"40245\"\r\n}""
看起来你的字符串被双重序列化了,所以这就是为什么它没有正确地反序列化。如果您使用的是WebAPI这样的框架,它会为您处理序列化,因此您不需要调用JsonConvert.SerializeObject()
。相反,更改ApiController方法以直接返回对象(注意,您还需要更改方法签名)。例如:
public class FooController : ApiController
{
[HttpPost]
public Dictionary<string, string> runGenericMethodFromApp()
{
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("Status", "SUCCESS,");
dict.Add("CustomerId", "1");
dict.Add("LicenseKey", "03bad945-37c0-4fa0-8126-fb4935df396d");
dict.Add("MachineFingerPrint", "9B82-A8ED-3DE9-0D8C-26DD-2D83-C17F-C2E3");
dict.Add("ExpirationDate", "11/18/2014");
dict.Add("LicenseDate", "11/18/2013");
dict.Add("LicenseGraceDay", "7");
dict.Add("RequireRenewal", "Y");
dict.Add("BaseUrl", "http://www.xxx-xxxxxxx.com");
dict.Add("HelpUrl", "http://www.xxx-xxxxxxx.com/help");
dict.Add("APIUrl", "http://localhost:63583/api/Ajax/runGenericMethodFromApp");
dict.Add("CoName", "TestCustomer1");
dict.Add("Addr1", "123 Any Street");
dict.Add("Addr2", "");
dict.Add("City", "Louisville");
dict.Add("State", "KY");
dict.Add("Zip", "40245");
return dict;
}
}