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.
@siepet: W którym momencie? W jsonie pojawiają mi się same, przy wywalaniu korzystam z Verbatim Stringa. Ze zwykłym stringiem też próbowałem, tylko wtedy zamiast @"\" dawałem "\ \" (bez spacji oczywiście, wykopowe formatowanie ( ͡°͜ʖ͡°) )
@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ę.
sprawdź w tej linijce dataAdapter.Fill(dataTable); jak wygląda odpowiedź z firebirda. imho wszystko powinno byc stringami do serializacji, a tutaj musi być inaczej.
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
json = JsonConvert.SerializeObject(dataTable);Takie coś zwraca mi w Fiddlerze coś takiego:
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
"[{\"ID\":1850}]"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;
dataAdapter.Fill(dataTable);
jak wygląda odpowiedź z firebirda. imho wszystko powinno byc stringami do serializacji, a tutaj musi być inaczej.
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
@asunez: To absolutnie nic nie daje w Twoim przypadku:
http://ideone.com/e5VMMk