C#NewtonSoft反序列化对象错误
奇怪的是,它在我的本地部署(Win10IIS)上运行良好,但当我将它部署到我们的UAT服务器上时,它就发疯了 我正在尝试反序列化以下json字符串:C#NewtonSoft反序列化对象错误,c#,json,object,serialization,json.net,C#,Json,Object,Serialization,Json.net,奇怪的是,它在我的本地部署(Win10IIS)上运行良好,但当我将它部署到我们的UAT服务器上时,它就发疯了 我正在尝试反序列化以下json字符串: { "header": { "application-code": "ZZZ" }, "piece": [ "0000001" ] } 定义了表示这一点的类: public class RequestPiece { [JsonProperty(PropertyName = "header")] pu
{
"header": {
"application-code": "ZZZ"
},
"piece": [
"0000001"
]
}
定义了表示这一点的类:
public class RequestPiece
{
[JsonProperty(PropertyName = "header")]
public RequestHeaderPiece requestheader { get; set; }
}
public class ResponseHeaderPiece
{
[JsonProperty(PropertyName = "application-code")]
public string application_code { get; set; }
}
public class ResponsePiece
{
[JsonProperty(PropertyName = "header")]
public ResponseHeaderPiece responseheader { get; set; }
[JsonProperty(PropertyName = "piece")]
public List<string> piece { get; set; }
}
公共类请求块
{
[JsonProperty(PropertyName=“header”)]
公共请求头文件请求头{get;set;}
}
公共课负责人
{
[JsonProperty(PropertyName=“应用程序代码”)]
公共字符串应用程序_代码{get;set;}
}
公共类响应
{
[JsonProperty(PropertyName=“header”)]
公共响应头文件响应头{get;set;}
[JsonProperty(PropertyName=“piece”)]
公共列表项{get;set;}
}
现在,当我运行此代码时:
public List<string> getP(string pieces)
{
try{
restAPI.Url = config.PieceServiceUrl + "/" + pieces;
restAPI.Method = "GET";
restAPI.ClientId = config.ClientId;
restAPI.Secret = config.SecretKey;
string returnString = restAPI.callJsonService();
log.Info(System.Reflection.MethodInfo.GetCurrentMethod() + "::JSON response => " + returnString);
ResponsePiece rp = JsonConvert.DeserializeObject<ResponsePiece>(returnString);
log.Info(System.Reflection.MethodInfo.GetCurrentMethod() + "::JSON response " + rp.piece);
return rp.piece;
}
catch (Exception ex)
{
log.Error(System.Reflection.MethodInfo.GetCurrentMethod() + "::failed::" + ex.Message.ToString() + " => " + ex.StackTrace.ToString());
return null;
}
}
public List getP(字符串片段)
{
试一试{
restAPI.Url=config.PieceServiceUrl+“/”+片段;
restAPI.Method=“GET”;
restAPI.ClientId=config.ClientId;
restAPI.Secret=config.SecretKey;
string returnString=restAPI.callJsonService();
log.Info(System.Reflection.MethodInfo.GetCurrentMethod()+”::JSON响应=>“+returnString);
ResponsePiece rp=JsonConvert.DeserializeObject(返回字符串);
log.Info(System.Reflection.MethodInfo.GetCurrentMethod()+“::JSON响应“+rp.piece);
返件;
}
捕获(例外情况除外)
{
log.Error(System.Reflection.MethodInfo.GetCurrentMethod()+”::失败::“+ex.Message.ToString()+”=>“+ex.StackTrace.ToString());
返回null;
}
}
JsonConvert.DeserializeObject返回以下错误:
RequestPid System.Collections.Generic.List`1[System.String] getP(System.String)::failed::System.Reflection.DefaultMemberAttribute.m_memberName =>
at System.Reflection.RtFieldInfo.PerformVisibilityCheckOnField(IntPtr field, Object target, IntPtr declaringType, FieldAttributes attr, UInt32 invocationFlags)
at System.Reflection.RtFieldInfo.InternalGetValue(Object obj, Boolean doVisibilityCheck, Boolean doCheckConsistency)
at System.Reflection.RtFieldInfo.GetValue(Object obj)
at System.Attribute.GetHashCode()
at System.Collections.Generic.ObjectEqualityComparer`1.GetHashCode(T obj)
at System.Linq.Set`1.InternalGetHashCode(TElement value)
at System.Linq.Set`1.Find(TElement value, Boolean add)
at System.Linq.Set`1.Add(TElement value)
at System.Linq.Enumerable.<UnionIterator>d__81`1.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at Newtonsoft.Json.Utilities.ReflectionUtils.GetAttributes(Object attributeProvider, Type attributeType, Boolean inherit)
at Newtonsoft.Json.Serialization.JsonTypeReflector.GetAssociateMetadataTypeFromAttribute(Type type)
at Newtonsoft.Json.Utilities.ThreadSafeStore`2.AddValue(TKey key)
at Newtonsoft.Json.Utilities.ThreadSafeStore`2.Get(TKey key)
at Newtonsoft.Json.Serialization.JsonTypeReflector.GetAssociatedMetadataType(Type type)
at Newtonsoft.Json.Serialization.JsonTypeReflector.GetAttribute[T](Type type)
at Newtonsoft.Json.Serialization.JsonTypeReflector.GetAttribute[T](Object provider)
at Newtonsoft.Json.Utilities.ThreadSafeStore`2.AddValue(TKey key)
at Newtonsoft.Json.Utilities.ThreadSafeStore`2.Get(TKey key)
at Newtonsoft.Json.Serialization.CachedAttributeGetter`1.GetAttribute(Object type)
at Newtonsoft.Json.Serialization.JsonTypeReflector.GetCachedAttribute[T](Object attributeProvider)
at Newtonsoft.Json.Serialization.DefaultContractResolver.InitializeContract(JsonContract contract)
at Newtonsoft.Json.Serialization.DefaultContractResolver.CreatePrimitiveContract(Type objectType)
at Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract(Type objectType)
at Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(Type type)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContractSafe(Type type)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at code.RequestP.getP(String pieces) in RequestP.cs:line 51
RequestPid System.Collections.Generic.List`1[System.String]getP(System.String)::失败::System.Reflection.DefaultMemberAttribute.m_memberName=>
在System.Reflection.RtFieldInfo.PerformVisibilityCheckOnField(IntPtr字段、对象目标、IntPtr declaringType、FieldAttributes attr、UInt32调用标志)
位于System.Reflection.RtFieldInfo.InternalGetValue(对象对象对象、布尔doVisibilityCheck、布尔doCheckConsistency)
在System.Reflection.RtFieldInfo.GetValue处(对象obj)
在System.Attribute.GetHashCode()处
位于System.Collections.Generic.ObjectEqualityComparer`1.GetHashCode(T obj)
在System.Linq.Set`1.InternalGetHashCode处(远程登录值)
在System.Linq.Set`1.Find处(远程输入值,布尔加法)
at System.Linq.Set`1.Add(远程通讯值)
在System.Linq.Enumerable.d_u81`1.MoveNext()中
在System.Linq.Buffer`1..ctor处(IEnumerable`1源)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1源)
位于Newtonsoft.Json.Utilities.ReflectionUtils.GetAttributes(对象attributeProvider,类型attributeType,布尔继承)
位于Newtonsoft.Json.Serialization.jsontyperelector.GetAssociateMetadataTypeFromAttribute(类型)
位于Newtonsoft.Json.Utilities.ThreadSafeStore`2.AddValue(TKey)
位于Newtonsoft.Json.Utilities.ThreadSafeStore`2.Get(TKey)
位于Newtonsoft.Json.Serialization.jsontyperelector.GetAssociatedMetadataType(类型)
位于Newtonsoft.Json.Serialization.jsontyperelector.GetAttribute[T](类型)
位于Newtonsoft.Json.Serialization.jsontyperelector.GetAttribute[T](对象提供程序)
位于Newtonsoft.Json.Utilities.ThreadSafeStore`2.AddValue(TKey)
位于Newtonsoft.Json.Utilities.ThreadSafeStore`2.Get(TKey)
位于Newtonsoft.Json.Serialization.CachedAttributeGetter`1.GetAttribute(对象类型)
位于Newtonsoft.Json.Serialization.jsontyperelector.GetCachedAttribute[T](对象属性Provider)
位于Newtonsoft.Json.Serialization.DefaultContractResolver.InitializeContact(JsonContract合同)
位于Newtonsoft.Json.Serialization.DefaultContractResolver.CreatePrimitiveContract(类型objectType)
位于Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract(类型objectType)
位于Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(类型)
位于Newtonsoft.Json.Serialization.JsonSerializerInternalReader.GetContractSafe(类型)
位于Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(对象newObject、JsonReader、JSONObject合同、JsonProperty成员、字符串id)
位于Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader阅读器,类型objectType,JsonContract契约,JsonProperty成员,JsonContainerContract容器契约,JsonProperty容器成员,对象existingValue)
位于Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader阅读器,类型objectType,JsonContract合同,JsonProperty成员,JsonContainerContract容器合同,JsonProperty容器成员,对象existingValue)
位于Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty属性、JsonConverter属性转换程序、JsonContainerContract容器合同、JsonProperty容器属性、JsonReader阅读器、对象目标)
位于Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(对象newObject、JsonReader、JSONObject合同、JsonProperty成员、字符串id)
位于Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader阅读器,类型objectType,JsonContract契约,JsonProperty成员,JsonContainerContract容器契约,JsonProperty容器成员,对象existingValue)
位于Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader阅读器,类型objectType,JsonContract合同,JsonProperty成员,JsonContainerContract容器合同,JsonProperty容器成员,对象existingValue)
在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader阅读器,类型objectType,Boolean checkAdditionalContent)
位于Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader,类型objectType)
在牛顿