我需要将JSON对象绑定到模型类。为此,我使用了以下代码行。
我测试的JSON如下
{
"Message":null,
"Error":false,
"VData":{
"RNumber":null,
"BRNumber":"Session1"
},
"onlineFields":{
"CCode":"Web",
"MNumber":"15478655",
"Product":"100",
"JsonFile":{
"evaluation":{
"number":[
{
"@paraID":"1000",
"@Value":"",
"@label":"We are america"
},
{
"@paraID":"2000",
"@Value":"100",
"@label":"We are japan"
},
{
"@paraID":"3000",
"@Value":"1000",
"@label":"We are UK"
},
{
"@paraID":"4000",
"@Value":"",
"@label":"We are China"
}
]
}
}
}
}
这是我的模型课。
public class VData
{
public object RNumber { get; set; }
public string BRNumber { get; set; }
}
public class Number
{
[JsonProperty("@paraID")]
public string paraID { get; set; }
[JsonProperty("@Value")]
public string Value { get; set; }
[JsonProperty("@label")]
public string label { get; set; }
}
public class Evaluation
{
public List<Number> number { get; set; }
}
public class JsonFile
{
public Evaluation evaluation { get; set; }
}
public class OnlineFields
{
public string CCode { get; set; }
public string MNumber { get; set; }
public string Product { get; set; }
public JsonFile JsonFile { get; set; }
}
public class Response
{
public object Message { get; set; }
public bool Error { get; set; }
public VData VData { get; set; }
public OnlineFields onlineFields { get; set; }
}
要将上述JSON设置为模型,我使用了以下代码
private static void showJSON(string testJson){
Response response = JsonConvert.DeserializeObject<Response>(testJson);
var dropdowns = response.OnlineFields.JsonFile;
string json = JsonConvert.SerializeObject(dropdowns, Newtonsoft.Json.Formatting.Indented);
Console.WriteLine(json);
}
这很好。但是问题是我的客户端通过API向我发送了以下JSON。
{
"Message":null,
"Error":false,
"VData":{
"RNumber":null,
"BRNumber":"Session1"
},
"onlineFields":{
"CCode":"Web",
"MNumber":"15478655",
"Product":"100",
"JsonFile":" {
\"evaluation\":{
\"number\":[
{
\"@paraID\":\"1000\",
\"@Value\":\"\",
\"@label\":\"We are america\"
},
{
\"@paraID\":\"2000\",
\"@Value\":\"100\",
\"@label\":\"We are japan\"
},
{
\"@paraID\":\"3000\",
\"@Value\":\"1000\",
\"@label\":\"We are UK\"
},
{
\"@paraID\":\"4000\",
\"@Value\":\"\",
\"@label\":\"We are China\"
}
]
}
} "
}
}
因此,如何转义“ \
”字符,以及如何将客户端发送的JSON绑定到我的模型。在客户端的JSON中具有称为JsonFile的内部JSON。此内部JSON包含“ \
”,内部JSON包含在引号""
中。所以请给我一个解决方案。
已更新:
根据this帖子。我已经试过了。但这使我出错。所以请给我一个解决方案。为了那个帖子或任何其他方式如何解决这个问题
dynamic obj = JsonConvert.DeserializeObject(json);
foreach (var response in (IEnumerable<dynamic>)obj.onlineFields)
{
response.onlineFields.JsonFile = JsonConvert.DeserializeObject((string)response.onlineFields.JsonFile);
}
string result = JsonConvert.SerializeObject(obj);
Console.WriteLine(result);