简体   繁体   English

c#:异化到数据集

[英]c# : Deserealization to DataSet

Can anyone help with JSON string parse on C#? 谁能在C#上帮助JSON字符串解析?

I tried to reproduce the sample from https://www.newtonsoft.com/json/help/html/DeserializeDataSet.htm 我试图从https://www.newtonsoft.com/json/help/html/DeserializeDataSet.htm复制示例

string json = @"{
                'Table1': [
                      {
                       'id': 0,
                       'item': 'item 0'
                      },
                      {
                        'id': 1,
                        'item': 'item 1'
                      }
                      ]
                     }";

dataSet = JsonConvert.DeserializeObject<DataSet>(json);

I receive the exception: 我收到异常:

JsonConvert.DeserializeObject exception System.Runtime.Serialization.SerializationException: Member 'XmlSchema' was not found. JsonConvert.DeserializeObject异常System.Runtime.Serialization.SerializationException:找不到成员'XmlSchema'。 09-17 07:41:27.075 I/mono-stdout( 3691): JsonConvert.DeserializeObject exception System.Runtime.Serialization.SerializationException: Member 'XmlSchema' was not found. 09-17 07:41:27.075 I / mono-stdout(3691):JsonConvert.DeserializeObject异常System.Runtime.Serialization.SerializationException:找不到成员'XmlSchema'。 at System.Runtime.Serialization.SerializationInfo.GetElement (System.String name, System.Type& foundType) [0x00020] in <3fd174ff54b146228c505f23cf75ce71>:0 at System.Runtime.Serialization.SerializationInfo.GetValue (System.String name, System.Type type) [0x0002e] in <3fd174ff54b146228c505f23cf75ce71>:0 at System.Data.DataSet.DeserializeDataSetSchema (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context, System.Data.SerializationFormat remotingFormat, System.Data.SchemaSerializationMode schemaSerializationMode) [0x000f5] in :0 at System.Data.DataSet.DeserializeDataSet (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context, System.Data.SerializationFormat remotingFormat, System.Data.SchemaSerializationMode schemaSerializationMode) [0x00000] in :0 at System.Data.DataSet..ctor (System.Runtime.Serialization.SerializationInfo inf o, System.Runtime.Serialization.StreamingContext context, 在System.Runtime.Serialization.SerializationInfo.GetValue的<3fd174ff54b146228c505f23cf75ce71>:0中的System.Runtime.Serialization.SerializationInfo.GetElement(System.String名称,System.Type&foundType)[0x00020]上(System.String名称,System.Type类型)[0x0002e],位于<3fd174ff54b146228c505f23cf75ce71>:0中,位于System.Data.DataSet.DeserializeDataSetSchema(System.Runtime.Serialization.SerializationInfo信息,System.Runtime.Serialization.StreamingContext上下文,System.Data.SerializationFormat远程格式化,System.Data.SchemaSerializationMode )[0x000f5]在0处位于System.Data.DataSet.DeserializeDataSet(System.Runtime.Serialization.SerializationInfo信息,System.Runtime.Serialization.StreamingContext上下文,System.Data.SerializationFormat remotingFormat,System.Data.SchemaSerializationMode schemaSerializationMode)中[0x00000f5] ]在System.Data.DataSet..ctor(System.Runtime.Serialization.SerializationInfo inf o,System.Runtime.Serialization.StreamingContext上下文中, System.Boolean ConstructSchema) [0x00069] in :0 at System.Data.DataSet..ctor (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00000] in :0 at (wrapper dynamic-method) System.Object:lambda_method (System.Runtime.CompilerServices.Closure,object[]) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateISerializable (Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonISerializableContract contract, Newtonsoft.Json.Serialization.JsonProperty member, System.String id) [0x0015b] in :0 at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject (Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonCo ntainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.Object existingValue) [0x00347] in :0 at Ne (0。方法)System.Object:lambda_method(System.Runtime.CompilerServices.Closure,object [])在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateISerializable(Newtonsoft.Json.JsonReader阅读器,Newtonsoft.Json.Serialization.JsonISerializableContract合同,Newton .Serialization.JsonProperty成员,System.String id)[0x0015b]在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(Newtonsoft.Json.JsonReader reader,System.Type objectType,Newtonsoft.Json.Serialization.JsonContract合同,Newtonsoft。 .Json.Serialization.JsonProperty成员,Newtonsoft.Json.Serialization.JsonCo ntainerContracterContainerContract containerContract,Newtonsoft.Json.Serialization.JsonProperty containerMember,System.Object存在值)[0x00347]在:0处Ne wtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.Object existingValue) [0x0006d] in :0 at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Boolean checkAdditionalContent) [0x000db] in :0 at Newtonsoft.Json.JsonSerializer.DeserializeInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00053] in : 0 at Newtonsoft.Json.JsonSerializer.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00000] in :0 at Newtonsoft.Json.JsonConvert.DeserializeObject (System.String value, System.Type type, Newtonsoft.Json.JsonSerializerSettings settings) [0x wtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(Newtonsoft.Json.JsonReader reader,System.Type objectType,Newtonsoft.Json.Serialization.JsonContract合同,Newtonsoft.Json.Serialization.JsonProperty成员,Newtonsoft.Json.Serialization.JsonContainer .Json.Serialization.JsonProperty containerMember,System.Object现有值)[0x0006d]在Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(Newtonsoft.Json.JsonReader reader,System.Type objectType,System.Boolean checkAdditionalContent)中为0:在0时在Newtonsoft.Json.JsonSerializer.DeserializeInternal(Newtonsoft.Json.JsonReader reader,System.Type objectType)[0x00053]在:0时在Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader reader,System.Type objectType )[0x00000]在Newtonsoft.Json.JsonConvert.DeserializeObject的:0中(System.String值,System.Type类型,Newtonsoft.Json.JsonSerializerSettings设置)[0x 0002d] in :0 at Newtonsoft.Json.JsonConvert.DeserializeObject[T] (System.String value, Newtonsoft.Json.JsonSerializerSettings settings) [0x00000] in :0 0002d]在0时在Newtonsoft.Json.JsonConvert.DeserializeObject [T](System.String值,Newtonsoft.Json.JsonSerializerSettings设置)在[0x00000]中:0

What is missing? 什么东西少了? Should I add any XML schema? 我应该添加任何XML模式吗?

As @Willem noted in comment use double quotation (this validates here ): 正如@Willem在评论中指出的那样,请使用双引号( 在此处验证):

{
    "Table1": [{
            "id": 0,
            "item": "item 0"
        },
        {
            "id": 1,
            "item": "item 1"
        }
    ]
}

Following notation diagram is the description from JSON.org 以下表示图是JSON.org的描述 在此处输入图片说明

In my case, I'm using Asp.Net Core. 就我而言,我正在使用Asp.Net Core。 I need to use nuget and get a latest version of Newtonsoft.Json. 我需要使用nuget并获取Newtonsoft.Json的最新版本。 Maybe the application use pre-install old version of Newtonsoft.Json. 也许该应用程序使用预安装的Newton.Json旧版本。 After get the latest Newtonsoft.Json (v12.0.1), it works perfectly. 获得最新的Newtonsoft.Json(v12.0.1)之后,它可以完美运行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM