我之前已成功使用Newtonsoft.Json反序列化JSON,但我遇到了这个简单示例的问题 - 请参阅下面 - 反序列化方法不会失败,但它不会实例化“ServiceResponse”类与预期值。调试器显示: ServiceResponse.StatusInfo = null, ServiceResponse.Email = null, ServiceResponse.JobId = 0
// Generated by Xamasoft JSON Class Generator
// http://www.xamasoft.com/json-class-generator
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Example.fmeResponseJsonTypes;
namespace Example.fmeResponseJsonTypes
{
public class StatusInfo
{
[JsonProperty("mode")]
public string Mode { get; set; }
[JsonProperty("status")]
public string Status { get; set; }
}
public class ServiceResponse
{
[JsonProperty("statusInfo")]
public StatusInfo StatusInfo { get; set; }
[JsonProperty("email")]
public string Email { get; set; }
[JsonProperty("jobID")]
public int JobID { get; set; }
}
}
namespace Example
{
public class fmeResponse
{
[JsonProperty("serviceResponse")]
public ServiceResponse ServiceResponse { get; set; }
public void Deserialize()
{
string res = "{\"serviceResponse\": {\"statusInfo\": {\"mode\": \"async\",\"status\": \"success\"},\"email\": \"tor.nielsen@xxx.com\",\"jobID\": 73}}";
ServiceResponse serviceResponse = null;
try
{
serviceResponse = JsonConvert.DeserializeObject<ServiceResponse>(res);
}
catch (Exception e)
{
throw new Exception("Error: Deserialization of [" + res + "] failed! \nDetails: " + e.Message + "\nTrace: " + e.StackTrace);
}
}
}
}
答案 0 :(得分:0)
试试这个, 请添加JsonProperty,我赶时间做了。
如果您不确定JsonString所需的类,请尝试json2csharp。它有时非常有用。
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Example.fmeResponseJsonTypes;
namespace Example.fmeResponseJsonTypes
{
public class StatusInfo
{
public string mode { get; set; }
public string status { get; set; }
}
public class ServiceResponse
{
public StatusInfo statusInfo { get; set; }
public string email { get; set; }
public int jobID { get; set; }
}
public class RootObject
{
public ServiceResponse serviceResponse { get; set; }
}
}
namespace Example
{
public class fmeResponse
{
public RootObject RootObject { get; set; }
public void Deserialize()
{
string res = "{\"serviceResponse\": {\"statusInfo\": {\"mode\": \"async\",\"status\": \"success\"},\"email\": \"tor.nielsen@xxx.com\",\"jobID\": 73}}";
ServiceResponse serviceResponse = null;
RootObject rootObject = null;
try
{
rootObject = JsonConvert.DeserializeObject<RootObject>(res);
}
catch (Exception e)
{
throw new Exception("Error: Deserialization of [" + res + "] failed! \nDetails: " + e.Message + "\nTrace: " + e.StackTrace);
}
}
}