StreamReader 和 JsonTextReader 的反序列化不起作用
Deserializetion with StreamReader and JsonTextReader not working
我正在写一个反序列化方法,但是反序列化后的对象没有填充任何值。我正在测试 class.
中测试方法的核心
[TestMethod]
public void DeserializeObject_WithReader()
{
string json = "{\"objectName\":\"joe\",\"objectAge\":30,\"objectDimensionX\":148.25,\"objectDimensionY\":95.87}";
using (StringReader reader = new StringReader(json))
{
using (JsonTextReader jsonReader = new JsonTextReader(reader))
{
JsonSerializer ser = JsonSerializer.CreateDefault();
var t = ser.Deserialize<SerializedObjectTestClass>(jsonReader);
}
}
}
这是我的测试class我正在尝试填充
public class SerializedObjectTestClass
{
private string ObjectName { get; set; }
private int ObjectAge { get; set; }
private decimal ObjectDimensionX { get; set; }
private decimal ObjectDimensionY { get; set; }
}
Newtonsoft Json.NET 默认情况下没有 serialize/deserialize 私有属性,因此您需要将它们设为 public,或者用 JsonPropertyAttribute
:
标记
public class SerializedObjectTestClass
{
public string ObjectName { get; set; }
....
}
或者:
public class SerializedObjectTestClass
{
[JsonProperty]
private string ObjectName { get; set; }
....
}
您可以一次反序列化整个对象:
SerializedObjectTestClass obj = JsonConvert.DeserializeObject<SerializedObjectTestClass>(json);
接下来是 newtonsoft 属性必须是 public :
public class SerializedObjectTestClass
{
public string ObjectName { get; set; }
public int ObjectAge { get; set; }
public decimal ObjectDimensionX { get; set; }
public decimal ObjectDimensionY { get; set; }
}
你也可以在上面添加属性 属性 :
[JsonProperty]
private string Property{ get; set; }
我正在写一个反序列化方法,但是反序列化后的对象没有填充任何值。我正在测试 class.
中测试方法的核心 [TestMethod]
public void DeserializeObject_WithReader()
{
string json = "{\"objectName\":\"joe\",\"objectAge\":30,\"objectDimensionX\":148.25,\"objectDimensionY\":95.87}";
using (StringReader reader = new StringReader(json))
{
using (JsonTextReader jsonReader = new JsonTextReader(reader))
{
JsonSerializer ser = JsonSerializer.CreateDefault();
var t = ser.Deserialize<SerializedObjectTestClass>(jsonReader);
}
}
}
这是我的测试class我正在尝试填充
public class SerializedObjectTestClass
{
private string ObjectName { get; set; }
private int ObjectAge { get; set; }
private decimal ObjectDimensionX { get; set; }
private decimal ObjectDimensionY { get; set; }
}
Newtonsoft Json.NET 默认情况下没有 serialize/deserialize 私有属性,因此您需要将它们设为 public,或者用 JsonPropertyAttribute
:
public class SerializedObjectTestClass
{
public string ObjectName { get; set; }
....
}
或者:
public class SerializedObjectTestClass
{
[JsonProperty]
private string ObjectName { get; set; }
....
}
您可以一次反序列化整个对象:
SerializedObjectTestClass obj = JsonConvert.DeserializeObject<SerializedObjectTestClass>(json);
接下来是 newtonsoft 属性必须是 public :
public class SerializedObjectTestClass
{
public string ObjectName { get; set; }
public int ObjectAge { get; set; }
public decimal ObjectDimensionX { get; set; }
public decimal ObjectDimensionY { get; set; }
}
你也可以在上面添加属性 属性 :
[JsonProperty]
private string Property{ get; set; }