我有以下代码:
5^3
然后我按下面的代码序列化并将其保存在数据库中:
lastSeenAt
数据库中的结果如下:
{" Id":" 2","姓名":" \" Pixel xl \"&#34 ;,"价格":" 2000"}
所以当我读取该字符串并对其进行Desialize时,我的名字值低于
ProductDto newProduct = new ProductDto() { Id = 2, Name = "Pixel xl",Price = 2000};
相反:private static string ToJson(object model)
{
JsonSerializerSettings jsonWriter = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
};
var type = model.GetType();
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (PropertyInfo item in type.GetProperties())
{
var propName = item.Name;
var propValue = item.GetValue(model);
if (propValue == null) continue;
propValue = JsonConvert.SerializeObject(propValue, Formatting.Indented, jsonWriter);
dic.Add(propName, propValue.ToString());
}
return JsonConvert.SerializeObject(dic);
}
我想比较那些像这样但是beceasue&#34; \它们不相同。
\"Pixel xl\"
答案 0 :(得分:0)
<强>首先强>
您似乎使用了错误的比较表达式。使用Object.Equal
即表示newValue
和oldValue
具有相同的对象。他们有相同的价值观#34;但不一样&#34;对象&#34;。
MSDN:
如果当前实例是引用类型,则为Equals(Object)方法 测试参考相等性,并调用Equals(Object)方法 等同于对ReferenceEquals方法的调用。参考 等式意味着被比较的对象变量是指 同一个对象。
<强>第二强>
转换后的值有一个额外的双qoute \"
。您可以使用.Replace("\"", "")
手动删除它。您可能希望创建另一个比较表达式来比较您的值。
类似的东西:
if (newValue.Name == oldValue.Name && newValue.Id == oldValue.Id && newValue.Price == oldValue.Price)
{
Console.WriteLine("Same");
}
else
{
Console.WriteLine("Not Same");
}
示例代码: https://dotnetfiddle.net/mJgRsL
附注:
您可以参考此链接了解Value vs Reference类型对象的区别。 https://msdn.microsoft.com/en-us/library/4d43ts61(v=vs.90).aspx