【解決方法】JSON文字列をデータテーブルに変換する際のエラー


やあ、

WebAPIを使用してデータベースからデータを取得し、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。

エラースタックトレース
——————–

Newtonsoft.Json.Converters.DataTableConverter.ReadJson (JsonReader リーダー、タイプ objectType、オブジェクトの既存の値、JsonSerializer シリアライザー) で
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter コンバーター、JsonReader リーダー、型 objectType、オブジェクトの既存の値) で
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader リーダー、タイプ objectType、ブール値 checkAdditionalContent) で
Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader リーダー、タイプ objectType) で
Newtonsoft.Json.JsonConvert.DeserializeObject(文字列値、Type タイプ、JsonSerializerSettings 設定) で
Newtonsoft.Json.JsonConvert.DeserializeObject(String 値、Type 型) で
C:\Users\20063692\source\Workspaces\E-07430-01-01\Solution\iMFCTest\iMFCTest.Service\iMFCDAL.cs:line 61 の iMFCTest.Service.iMFCDAL.d__3.MoveNext()

私が試したこと:

変換には以下のコードを使用しました。
DataTable table=(DataTable)JsonConvert.DeserializeObject(dataString, (typeof(DataTable)));

解決策 1

確認しましたが問題はありませんでした。 実際に取得した JSON を確認し、JSONLint を使用して json が有効かどうかを検証していただけますか? あなたが言及したjsonは正しいので、それをデータテーブルに変換できました。 取得した JSON が正確に何であるかを確認し、検証します。

私のコードをチェックしてください:

文字列 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 テーブル = (DataTable)JsonConvert.DeserializeObject(s, (typeof(DataTable)));

解決策 2

[{\"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 \"}]

コメント

タイトルとURLをコピーしました