一尘不染

WCF中的JsonConvert.DeserializeObject和“ d”包装器

json

默认情况下,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?


阅读 269

收藏
2020-07-27

共1个答案

一尘不染

现在,我用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'.

诀窍在哪里?

2020-07-27