Wpis z mikrobloga

Murki, przygotowuję sobie małe RestAPI, o którym już wcześniej pisałem i wszystko byłoby spoko, gdyby nie fakt, że nie potrafię uzyskać poprawnego JSON'a z mojego DataTable.

json = JsonConvert.SerializeObject(dataTable);
Takie coś zwraca mi w Fiddlerze coś takiego:

"[{\"ID\":\"1849\"}]"

A sam Fiddler krzyczy, że "Invalid character at position 3". No i git, też mi się nie podobają te backslashe więc staram się je wywalić przez

json = json.Replace(@"\", String.Empty);
Ale mimo to string jest dalej taki sam. Co robię nie tak?

Oczywiście korzystam z Newtonsofta do serializacji. Próbowałem już kilku innych metod na wywalenie tych backslashy, ale nic to nie zmienia. Taki sam string zwraca mi debugger w VS.

#csharp #programowanie #naukaprogramowania #restapi
  • 11
@blackphoenix:

var dataTable = new DataTable();
string json = "";
FbDataAdapter dataAdapter = new FbDataAdapter("storedProc", FireBirdConnection.fbConnection);
dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
// Tu dodaje parametry do procedury składowanej
dataAdapter.Fill(dataTable);

json = JsonConvert.SerializeObject(dataTable);
json = json.Replace(@"\", String.Empty);

return json;
@blackphoenix: No i to tworzenie mam z jakiejś dokumentacji Firebird .Net drivera. Jak tego się mi nie uda to po prostu chyba zostanie mi "ręczne" stworzenie JSONa z tego DataTable, bo inaczej to ja tego nie widzę.
@asunez:
mam taka metodke

public static DataTable ConvertToDataTable(this OpportunityChartViewModel data)
{
var table = new DataTable();
table.TableName = "ResultsTable";
foreach (var col in data.Columns)
{
table.Columns.Add(new DataColumn(col));
}
foreach (var info in data.FinancialInfo)
{
var row = table.NewRow();
var i = 0;
foreach (var v in info)
{
row[i] = v;
i++;
}
table.Rows.Add(row);
}

return table;
}

gdzie data.Columns to string[] a data.FinancialInfo to list.
i to porpawnie sie serializuje