Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ; 集合;} [JsonProperty(“名字”)] 公共字符串名{get;set;} [JsonProperty(“姓氏”)] 公共字符串LastName{get;set;} [JsonProperty(“修改日期”)] 公共DateTimeOffset修改日期{get;set;} } 公共部分结构ValueElement { 公共字符串; 公共价值阶层; 公共静态隐式运算符ValueElement(string)=>new ValueElement{string=string}; 公共静态隐式运算符ValueElement(ValueClass ValueClass)=>new ValueElement{ValueClass=ValueClass}; } 内部静态类转换器2 { 公共静态只读JsonSerializerSettings设置=新JsonSerializerSettings { MetadataPropertyHandling=MetadataPropertyHandling.Ignore, DateParseHandling=DateParseHandling.None, 转换器= { ValueElementConverter.Singleton, 新的IsoDateTimeConverter{DateTimeStyles=DateTimeStyles.AssumeUniversal} }, }; } 内部类ValueElementConverter:JsonConverter { 公共覆盖布尔CanConvert(Type t)=>t==typeof(ValueElement)| | t==typeof(ValueElement?); 公共重写对象ReadJson(JsonReader阅读器,类型t,对象existingValue,JsonSerializer序列化程序) { 开关(reader.TokenType) { case JsonToken.String: 案例JsonToken。日期: var stringValue=serializer.Deserialize(读取器); 返回新的ValueElement{String=stringValue}; 案例JsonToken.StartObject: var objectValue=serializer.Deserialize(读取器); 返回新的ValueElement{ValueClass=objectValue}; } 抛出新异常(“无法解组类型ValueElement”); } public override void WriteJson(JsonWriter编写器、对象非类型化值、JsonSerializer序列化器) { var值=(ValueElement)非类型值; if(value.String!=null) { serializer.Serialize(writer,value.String); 回来 } 如果(value.ValueClass!=null) { serializer.Serialize(writer,value.ValueClass); 回来 } 抛出新异常(“无法封送类型ValueElement”); } 公共静态只读ValueElementConverter Singleton=新的ValueElementConverter(); } }_C#_Deserialization_Json Deserialization - Fatal编程技术网

C# ; 集合;} [JsonProperty(“名字”)] 公共字符串名{get;set;} [JsonProperty(“姓氏”)] 公共字符串LastName{get;set;} [JsonProperty(“修改日期”)] 公共DateTimeOffset修改日期{get;set;} } 公共部分结构ValueElement { 公共字符串; 公共价值阶层; 公共静态隐式运算符ValueElement(string)=>new ValueElement{string=string}; 公共静态隐式运算符ValueElement(ValueClass ValueClass)=>new ValueElement{ValueClass=ValueClass}; } 内部静态类转换器2 { 公共静态只读JsonSerializerSettings设置=新JsonSerializerSettings { MetadataPropertyHandling=MetadataPropertyHandling.Ignore, DateParseHandling=DateParseHandling.None, 转换器= { ValueElementConverter.Singleton, 新的IsoDateTimeConverter{DateTimeStyles=DateTimeStyles.AssumeUniversal} }, }; } 内部类ValueElementConverter:JsonConverter { 公共覆盖布尔CanConvert(Type t)=>t==typeof(ValueElement)| | t==typeof(ValueElement?); 公共重写对象ReadJson(JsonReader阅读器,类型t,对象existingValue,JsonSerializer序列化程序) { 开关(reader.TokenType) { case JsonToken.String: 案例JsonToken。日期: var stringValue=serializer.Deserialize(读取器); 返回新的ValueElement{String=stringValue}; 案例JsonToken.StartObject: var objectValue=serializer.Deserialize(读取器); 返回新的ValueElement{ValueClass=objectValue}; } 抛出新异常(“无法解组类型ValueElement”); } public override void WriteJson(JsonWriter编写器、对象非类型化值、JsonSerializer序列化器) { var值=(ValueElement)非类型值; if(value.String!=null) { serializer.Serialize(writer,value.String); 回来 } 如果(value.ValueClass!=null) { serializer.Serialize(writer,value.ValueClass); 回来 } 抛出新异常(“无法封送类型ValueElement”); } 公共静态只读ValueElementConverter Singleton=新的ValueElementConverter(); } }

C# ; 集合;} [JsonProperty(“名字”)] 公共字符串名{get;set;} [JsonProperty(“姓氏”)] 公共字符串LastName{get;set;} [JsonProperty(“修改日期”)] 公共DateTimeOffset修改日期{get;set;} } 公共部分结构ValueElement { 公共字符串; 公共价值阶层; 公共静态隐式运算符ValueElement(string)=>new ValueElement{string=string}; 公共静态隐式运算符ValueElement(ValueClass ValueClass)=>new ValueElement{ValueClass=ValueClass}; } 内部静态类转换器2 { 公共静态只读JsonSerializerSettings设置=新JsonSerializerSettings { MetadataPropertyHandling=MetadataPropertyHandling.Ignore, DateParseHandling=DateParseHandling.None, 转换器= { ValueElementConverter.Singleton, 新的IsoDateTimeConverter{DateTimeStyles=DateTimeStyles.AssumeUniversal} }, }; } 内部类ValueElementConverter:JsonConverter { 公共覆盖布尔CanConvert(Type t)=>t==typeof(ValueElement)| | t==typeof(ValueElement?); 公共重写对象ReadJson(JsonReader阅读器,类型t,对象existingValue,JsonSerializer序列化程序) { 开关(reader.TokenType) { case JsonToken.String: 案例JsonToken。日期: var stringValue=serializer.Deserialize(读取器); 返回新的ValueElement{String=stringValue}; 案例JsonToken.StartObject: var objectValue=serializer.Deserialize(读取器); 返回新的ValueElement{ValueClass=objectValue}; } 抛出新异常(“无法解组类型ValueElement”); } public override void WriteJson(JsonWriter编写器、对象非类型化值、JsonSerializer序列化器) { var值=(ValueElement)非类型值; if(value.String!=null) { serializer.Serialize(writer,value.String); 回来 } 如果(value.ValueClass!=null) { serializer.Serialize(writer,value.ValueClass); 回来 } 抛出新异常(“无法封送类型ValueElement”); } 公共静态只读ValueElementConverter Singleton=新的ValueElementConverter(); } },c#,deserialization,json-deserialization,C#,Deserialization,Json Deserialization,像这样反序列化: var myObject = JsonConvert.DeserializeObject<Request>(json, Converter2.Settings); var myObject=JsonConvert.DeserializeObject(json,Converter2.Settings); 我能够用 看起来效果不错。 代码如下: using System; using System.Collections.Generic; using System.

像这样反序列化:

var myObject = JsonConvert.DeserializeObject<Request>(json, Converter2.Settings);
var myObject=JsonConvert.DeserializeObject(json,Converter2.Settings);

我能够用

看起来效果不错。
代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

namespace QuickType
{
    public partial class Request
    {
        [JsonProperty("status")]
        public string Status { get; set; }

        [JsonProperty("value")]
        public ValueElement[][] Value { get; set; }
    }

    public partial class ValueClass
    {
        [JsonProperty("role")]
        public string Role { get; set; }

        [JsonProperty("company")]
        public string Company { get; set; }

        [JsonProperty("first_name")]
        public string FirstName { get; set; }

        [JsonProperty("last_name")]
        public string LastName { get; set; }

        [JsonProperty("modification_date")]
        public DateTimeOffset ModificationDate { get; set; }
    }

    public partial struct ValueElement
    {
        public string String;
        public ValueClass ValueClass;

        public static implicit operator ValueElement(string String) => new ValueElement { String = String };
        public static implicit operator ValueElement(ValueClass ValueClass) => new ValueElement { ValueClass = ValueClass };
    }

    internal static class Converter2
    {
        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
        {
            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
            DateParseHandling = DateParseHandling.None,
            Converters =
            {
                ValueElementConverter.Singleton,
                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
            },
        };
    }

    internal class ValueElementConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(ValueElement) || t == typeof(ValueElement?);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            switch (reader.TokenType)
            {
                case JsonToken.String:
                case JsonToken.Date:
                    var stringValue = serializer.Deserialize<string>(reader);
                    return new ValueElement { String = stringValue };
                case JsonToken.StartObject:
                    var objectValue = serializer.Deserialize<ValueClass>(reader);
                    return new ValueElement { ValueClass = objectValue };
            }
            throw new Exception("Cannot unmarshal type ValueElement");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (ValueElement)untypedValue;
            if (value.String != null)
            {
                serializer.Serialize(writer, value.String);
                return;
            }
            if (value.ValueClass != null)
            {
                serializer.Serialize(writer, value.ValueClass);
                return;
            }
            throw new Exception("Cannot marshal type ValueElement");
        }

        public static readonly ValueElementConverter Singleton = new ValueElementConverter();
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
利用制度全球化;
使用Newtonsoft.Json;
使用Newtonsoft.Json.Converters;
命名空间快速类型
{
公共部分类请求
{
[JsonProperty(“状态”)]
公共字符串状态{get;set;}
[JsonProperty(“价值”)]
public ValueElement[]值{get;set;}
}
公共部分类ValueClass
{
[JsonProperty(“角色”)]
公共字符串角色{get;set;}
[JsonProperty(“公司”)]
公共字符串公司{get;set;}
[JsonProperty(“名字”)]
公共字符串名{get;set;}
[JsonProperty(“姓氏”)]
公共字符串LastName{get;set;}
[JsonProperty(“修改日期”)]
公共DateTimeOffset修改日期{get;set;}
}
公共部分结构ValueElement
{
公共字符串;
公共价值阶层;
公共静态隐式运算符ValueElement(string)=>new ValueElement{string=string};
公共静态隐式运算符ValueElement(ValueClass ValueClass)=>new ValueElement{ValueClass=ValueClass};
}
内部静态类转换器2
{
公共静态只读JsonSerializerSettings设置=新JsonSerializerSettings
{
MetadataPropertyHandling=MetadataPropertyHandling.Ignore,
DateParseHandling=DateParseHandling.None,
转换器=
{
ValueElementConverter.Singleton,
新的IsoDateTimeConverter{DateTimeStyles=DateTimeStyles.AssumeUniversal}
},
};
}
内部类ValueElementConverter:JsonConverter
{
公共覆盖布尔CanConvert(Type t)=>t==typeof(ValueElement)| | t==typeof(ValueElement?);
公共重写对象ReadJson(JsonReader阅读器,类型t,对象existingValue,JsonSerializer序列化程序)
{
开关(reader.TokenType)
{
case JsonToken.String:
案例JsonToken。日期:
var stringValue=serializer.Deserialize(读取器);
返回新的ValueElement{String=stringValue};
案例JsonToken.StartObject:
var objectValue=serializer.Deserialize(读取器);
返回新的ValueElement{ValueClass=objectValue};
}
抛出新异常(“无法解组类型ValueElement”);
}
public override void WriteJson(JsonWriter编写器、对象非类型化值、JsonSerializer序列化器)
{
var值=(ValueElement)非类型值;
if(value.String!=null)
{
serializer.Serialize(writer,value.String);
回来
}
如果(value.ValueClass!=null)
{
serializer.Serialize(writer,value.ValueClass);
回来
}
抛出新异常(“无法封送类型ValueElement”);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

namespace QuickType
{
    public partial class Request
    {
        [JsonProperty("status")]
        public string Status { get; set; }

        [JsonProperty("value")]
        public ValueElement[][] Value { get; set; }
    }

    public partial class ValueClass
    {
        [JsonProperty("role")]
        public string Role { get; set; }

        [JsonProperty("company")]
        public string Company { get; set; }

        [JsonProperty("first_name")]
        public string FirstName { get; set; }

        [JsonProperty("last_name")]
        public string LastName { get; set; }

        [JsonProperty("modification_date")]
        public DateTimeOffset ModificationDate { get; set; }
    }

    public partial struct ValueElement
    {
        public string String;
        public ValueClass ValueClass;

        public static implicit operator ValueElement(string String) => new ValueElement { String = String };
        public static implicit operator ValueElement(ValueClass ValueClass) => new ValueElement { ValueClass = ValueClass };
    }

    internal static class Converter2
    {
        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
        {
            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
            DateParseHandling = DateParseHandling.None,
            Converters =
            {
                ValueElementConverter.Singleton,
                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
            },
        };
    }

    internal class ValueElementConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(ValueElement) || t == typeof(ValueElement?);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            switch (reader.TokenType)
            {
                case JsonToken.String:
                case JsonToken.Date:
                    var stringValue = serializer.Deserialize<string>(reader);
                    return new ValueElement { String = stringValue };
                case JsonToken.StartObject:
                    var objectValue = serializer.Deserialize<ValueClass>(reader);
                    return new ValueElement { ValueClass = objectValue };
            }
            throw new Exception("Cannot unmarshal type ValueElement");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (ValueElement)untypedValue;
            if (value.String != null)
            {
                serializer.Serialize(writer, value.String);
                return;
            }
            if (value.ValueClass != null)
            {
                serializer.Serialize(writer, value.ValueClass);
                return;
            }
            throw new Exception("Cannot marshal type ValueElement");
        }

        public static readonly ValueElementConverter Singleton = new ValueElementConverter();
    }
}
var myObject = JsonConvert.DeserializeObject<Request>(json, Converter2.Settings);