默认情况下,WCF服务将JSON响应包装在“ d”包装器中,在那里我发现了解析它的问题。
如果我使用 JsonConvert.DeserializeObject(response) 解析, 则 响应为
"{\"d\":\"{\"a0b70d2f-7fe4-4aa2-b600-066201eab82d\":\"Thelma\",\"d56d4d4f-6029-40df-a23b-de27617a1e43\":\"Louise\"}\"}"
我犯了一个错误:
After parsing a value an unexpected character was encoutered: a. Line 1, position 9.
如果我将响应更改为
"{\"a0b70d2f-7fe4-4aa2-b600-066201eab82d\":\"Thelma\",\"d56d4d4f-6029-40df-a23b-de27617a1e43\":\"Louise\"}"
我知道了
那么,如何从WCF服务解析此“ d”包装的JSON响应呢?有没有更好的方法来解析JSON?
现在,我用Regex。摆脱了“ d”包装。用适当的结构替换并修复了JSON响应
{\"Guid\":\"a0b70d2f-7fe4-4aa2-b600-066201eab82d\",\"Name\":\"Thelma\"} {\"Guid\":\"d56d4d4f-6029-40df-a23b-de27617a1e43\",\"Name\":\"Lousie\"}\"}
我还使用Guid和Name创建一个类,该类在其中定义为字符串。
然后尝试反序列化
List<myStruct> o = JsonConvert.DeserializeObject<List<myStruct>>(response);
但是我得到一个错误
Expected a JsonObjectContract or JsonDictionaryContract for type 'System.Collections.Generic.List`1[mynamespace.myStruct]', got 'Newtonsoft.Json.Serialization.JsonArrayContract'.
诀窍在哪里?