首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NewtonSoft JsonConvert列表

NewtonSoft JsonConvert列表
EN

Stack Overflow用户
提问于 2019-08-06 09:18:30
回答 1查看 282关注 0票数 1

我有一个非常简单的结构,我想用牛顿软Json序列化来序列化。

定义:

代码语言:javascript
复制
public enum SensorType
{
    Temperature,
    Flow,
    Pressure
}

public enum SensorLocation
{
    Manifold,
    TopVessel,
    WaferStage
}

[JsonArray]
public class SensorConfiguration
{
    [JsonProperty]
    public string Name { get; set; }
    [JsonConverter(typeof(StringEnumConverter))]
    public SensorType Type { get; set; }
    [JsonConverter(typeof(StringEnumConverter))]
    public SensorLocation Location { get; set; }

    public SensorConfiguration()
    {
    }

    public SensorConfiguration(string name, SensorType type, SensorLocation location)
    {
        Name = name;
        Type = type;
        Location = location;
    }
}

序列化:

代码语言:javascript
复制
        var topvessel = Sensors.TopVessel.Select(sensor =>
            new SensorConfiguration(sensor.SensorName, sensor.Type, SensorLocation.TopVessel));
        var manifold = Sensors.Manifold.Select(sensor =>
            new SensorConfiguration(sensor.SensorName, sensor.Type, SensorLocation.Manifold));
        var waferstage = Sensors.WaferStage.Select(sensor =>
            new SensorConfiguration(sensor.SensorName, sensor.Type, SensorLocation.Manifold));

        var sensorConfigurations = topvessel.Concat(manifold).Concat(waferstage).ToList();

        var json = JsonConvert.SerializeObject(sensorConfigurations);

错误:

代码语言:javascript
复制
System.InvalidCastException : Unable to cast object of type 'Asml.Mbi.FlowAndTemperature.Interfaces.Configuration.SensorConfiguration' to type 'System.Collections.IEnumerable'.
    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)
    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IEnumerable values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)
    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) 
    at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)
    at Newtonsoft.Json.JsonConvert.SerializeObjectInternal(Object value, Type type, JsonSerializer jsonSerializer)
    at Newtonsoft.Json.JsonConvert.SerializeObject(Object value)
    at Asml.Mbi.FlowAndTemperature.Peripherals.Ftcb.FtcBox.GetSensorConfiguration() in D:\dev\multibeaminspection\BuildingBlocks\FlowAndTemperature\Implementation\Peripherals\Ftcb\FtcBox.cs:line 75
    at Asml.Mbi.FlowAndTemperature.UnitTest.FtcBoxTests.GetConfiguration() in D:\dev\multibeaminspection\BuildingBlocks\FlowAndTemperature\UnitTest\FtcBoxTests.cs:line 212

我做错了什么?示例显示有可能..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-06 09:27:55

尝试删除[JsonArray]

所以你的代码看起来就像

代码语言:javascript
复制
public class SensorConfiguration
{
    [JsonProperty]
    public string Name { get; set; }
    [JsonConverter(typeof(StringEnumConverter))]
    public SensorType Type { get; set; }
    [JsonConverter(typeof(StringEnumConverter))]
    public SensorLocation Location { get; set; }

    public SensorConfiguration()
    {
    }

    public SensorConfiguration(string name, SensorType type, SensorLocation location)
    {
        Name = name;
        Type = type;
        Location = location;
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57372793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档