将JSON字符串转换为datatable时出错 [英] Error in converting JSON string to datatable

查看:318
本文介绍了将JSON字符串转换为datatable时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我需要使用WebAPI从db获取一些数据并将其作为JSON字符串发送回用户并将其转换回数据表。我无法找出问题所在。请建议。





JSON字符串

------------- ----

[{\TestID \:\1 \,\WorkOrderID \:\2 \,\ Recipe \:\1110 \,\FitCoeffA \:\0 \,\FitCoeffB \:\0 \,\FitCoeffC \\ \\:\0 \,\Temp0 \:\0 \,\Temp1 \:\0 \,\Temp2 \ :\0 \,\TestResult \:\1 \},{\TestID \:\1 \,\WorkOrderID \ :\2 \,\Recipe \:\1110 \,\FitCoeffA \:\0 \,\FitCoeffB \:\\ \\0 \,\FitCoeffC \:\0 \,\Temp0 \:\0 \,\Temp1 \:\ 0 \,\Temp2 \:\0 \,\TestResult \:\1 \}]



例外

--- -------

读取DataTable时出现意外的JSON令牌。预期的StartArray,得到了String。路径'',第1行,第557位。



错误堆栈跟踪

------------- -------



at Newtonsoft.Json.Converters.DataTableConverter.ReadJson(JsonReader reader,Type objectType,Object existingValue,JsonSerializer serializer)

at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter,JsonReader reader,Type objectType,Object existingValue)

at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType,Boolean checkAdditionalContent)

at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,Type objectType)

at Newtonsoft.Json.JsonConvert.DeserializeObject(String value,Type type ,JsonSerializerSettings设置)

at Newtonsoft.Json.JsonConvert.DeserializeObject(String value,Type type)

at iMFCTest.Service.iMFCDAL。< getcalibrationdata> d__3.Mo C中的veNext():\于工具空间\ E-07430-01-01 \解决方案\ iMFCTest \ iMFCTest.Service \ iMFCDAL.cs:第61行



我尝试了什么:



我在下面的代码中使用转换:

DataTable table =(DataTable)JsonConvert.DeserializeObject(dataString,(typeof(DataTable)));

Hi,

I have a requirement to get some data from db using WebAPI and send back to user as a JSON string and convert back it to a datatable. I could not find out what is going wrong. Please suggest.


JSON string
-----------------
"[{\"TestID\":\"1 \",\"WorkOrderID\":\"2 \",\"Recipe\":\"1110 \",\"FitCoeffA\":\"0 \",\"FitCoeffB\":\"0 \",\"FitCoeffC\":\"0 \",\"Temp0\":\"0 \",\"Temp1\":\"0 \",\"Temp2\":\"0 \",\"TestResult\":\"1 \"},{\"TestID\":\"1 \",\"WorkOrderID\":\"2 \",\"Recipe\":\"1110 \",\"FitCoeffA\":\"0 \",\"FitCoeffB\":\"0 \",\"FitCoeffC\":\"0 \",\"Temp0\":\"0 \",\"Temp1\":\"0 \",\"Temp2\":\"0 \",\"TestResult\":\"1 \"}]"

Exception
----------
Unexpected JSON token when reading DataTable. Expected StartArray, got String. Path '', line 1, position 557.

Error stack trace
--------------------

at Newtonsoft.Json.Converters.DataTableConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type)
at iMFCTest.Service.iMFCDAL.<getcalibrationdata>d__3.MoveNext() in C:\Users\20063692\source\Workspaces\E-07430-01-01\Solution\iMFCTest\iMFCTest.Service\iMFCDAL.cs:line 61

What I have tried:

I used below code for conversion:
DataTable table=(DataTable)JsonConvert.DeserializeObject(dataString, (typeof(DataTable)));

推荐答案

我检查过,发现没有问题。您能否检查一下您实际获得的JSON并使用JSONLint验证它是否有效?因为你提到的json是正确的,我能够将它转换为数据表。检查你正在获得的json是什么并验证它。



检查我的代码:



string s =[{\TestID \:\1 \,\WorkOrderID \:\2 \,\Recipe \:\1110 \ ,\FitCoeffA \:\0 \,\FitCoeffB \:\0 \,\FitCoeffC \:\0 \, \Temp0 \:\0 \,\Temp1 \:\0 \,\Temp2 \:\0 \,\ TestResult \:\1 \},{\TestID \:\1 \,\WorkOrderID \:\2 \,\ Recipe \:\1110 \,\FitCoeffA \:\0 \,\FitCoeffB \:\0 \,\FitCoeffC \:\0 \,\Temp0 \:\0 \,\Temp1 \:\0 \,\Temp2 \ :\0 \,\TestResult \:\1 \}];



DataTable table =(DataTabl e)JsonConvert.DeserializeObject(s,(typeof(DataTable)));
I have checked and found no issue. Can you please check what JSON you are actually getting and validate it using JSONLint whether json is valid or not? Because the json you mentioned is correct and i was able to convert it into datatable. Check what the json you are exactly getting and validate it.

Check my code:

string s = "[{\"TestID\":\"1 \",\"WorkOrderID\":\"2 \",\"Recipe\":\"1110 \",\"FitCoeffA\":\"0 \",\"FitCoeffB\":\"0 \",\"FitCoeffC\":\"0 \",\"Temp0\":\"0 \",\"Temp1\":\"0 \",\"Temp2\":\"0 \",\"TestResult\":\"1 \"},{\"TestID\":\"1 \",\"WorkOrderID\":\"2 \",\"Recipe\":\"1110 \",\"FitCoeffA\":\"0 \",\"FitCoeffB\":\"0 \",\"FitCoeffC\":\"0 \",\"Temp0\":\"0 \",\"Temp1\":\"0 \",\"Temp2\":\"0 \",\"TestResult\":\"1 \"}]";

DataTable table = (DataTable)JsonConvert.DeserializeObject(s, (typeof(DataTable)));


这篇关于将JSON字符串转换为datatable时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆