У меня есть служба CF WCF. Там я хочу преобразовать в JSON String.DataSet, содержащую больше таблиц. В некоторых случаях в результате получается неправильный формат json.
{
"Target1": [
{
"BusinessUnit": "MASS",
"RetailerCode": "TEST0002"
},
{
"BusinessUnit": "MASS",
"RetailerCode": "TEST0008"
}
]
}{
"PDCheque1": [
{
"BusinessUnit": "MASS",
"AccountCode": "TEST0003"
}
]
} 0 {
"OutStanding1": [
{
"BusinessUnit": "MASS",
"Year": "2010"
},
{
"BusinessUnit": "MASS",
"Year": "2010"
}
]
}
Вот метод покрытия:
//Converting dataset to json
public String ConverTableToJson(DataSet dsDownloadJson){
String tableData = "";
StringBuilder Sb = new StringBuilder();
Sb.Append("{\"");
foreach (DataTable dt in dsDownloadJson.Tables)
{
DataTable dtDownloadJson = dt;
string[] StrDc = new string[dtDownloadJson.Columns.Count];
string HeadStr = string.Empty;
Sb.Append( dtDownloadJson.TableName + "1\" : [");
if (dtDownloadJson.Rows.Count > 0)
{
for (int i = 0; i < dtDownloadJson.Columns.Count; i++)
{
StrDc[i] = dtDownloadJson.Columns[i].Caption;
HeadStr += "\"" + StrDc[i] + "\" : \"" + StrDc[i] + i.ToString() + "¾" + "\",";
}
if (HeadStr.Length > 0)
{
HeadStr = HeadStr.Substring(0, HeadStr.Length - 1);
for (int i = 0; i < dtDownloadJson.Rows.Count; i++)
{
string TempStr = HeadStr;
Sb.Append("{");
for (int j = 0; j < dtDownloadJson.Columns.Count; j++)
{
TempStr = TempStr.Replace(dtDownloadJson.Columns[j] + j.ToString() + "¾", dtDownloadJson.Rows[i][j].ToString());
}
Sb.Append(TempStr + "},");
}
Sb = new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length - 1));
}
else
{
Sb.Append("0 }");
}
}
else
{
Sb.Append("0 }");
}
Sb.Append("]}");
}
return Sb.ToString(); ;
}
Если таблица не содержит записей, тогда ей нужно возвращать "0", как `Tablename [{0}] '
Это происходит следующим образом. Во 2-м сете PDCheque1
место не так.
Как я хочу отформатировать?
В Android я хочу получить каждый набор, используя имя таблицы, например, PDCheque1
, 'Target1`, как мудрый.
1-й набор в порядке, чтобы получить результат. Когда я передаю JSONArray array = jsonobject.getJSONArray(tablename);' It say no
`PDCheque1``
Пожалуйста, помогите мне ...
Заранее спасибо