我要做的是以JSON格式打印出数组的第一个索引。
使用代码:
storeInformation = myStoreInfoTable;
strResponseOutput = JsonConvert.SerializeObject(storeInformation);
结果如下:
[
{
"distance": 0,
"descr": "Toronto",
"address": "1300 Castlefield Avenue",
"city": "Toronto"
},
{
"distance": 7.1121883392,
"descr": "Etobicoke - North",
"address": "Resources Road",
"city": "Etobicoke"
}
]
我尝试做的第一个索引是:
storeInformationRow = dtbStoreInformation.Rows[0];
strResponseOutput = JsonConvert.SerializeObject(storeInformationRow);
我得到的是:
{
"RowError": "",
"RowState": 2,
"Table": [
{
"distance": 0.0000000000,
"descr": "Toronto",
"address": "1300 Castlefield Avenue",
"city": "Toronto"
},
{
"distance": 7.1121883392,
"descr": "Etobicoke - North",
"address": "Resources Road",
"city": "Etobicoke"
}
]
}
我想要的结果只是
{
"distance": 0.0000000000,
"descr": "Toronto",
"address": "1300 Castlefield Avenue",
"city": "Toronto"
}
帮助任何人?
答案 0 :(得分:0)
在我看来,JSON序列化程序正在搞砸,因为它不知道如何正确序列化DataRow
。这是第一个和第二个代码片段之间的唯一区别。
如果您查看the MSDN documentation for the DataRow
class,可以看到DataRow
显示的属性(RowError
,RowState
和Table
)等等。< / p>
要解决您的问题,我建议使用以下两个选项之一:
创建一个新的DataTable
并添加要序列化的DataRow
,并在其上调用JsonConvert.SerializeObject()
。
将列(距离,描述符,地址和城市)映射到另一个类(Store
或其他类)并尝试序列化该对象。从我所读的in the JsonConvert
documentation可能(类属性正确映射到JSON对象)。
让我知道它是怎么回事!
答案 1 :(得分:0)
你可以使用:
var row = dtbStoreInformation.Rows [0];
string strResponseOutput = new {
distance = row[0].ToString(),
descr= row[1].ToString(),
address = row[2].ToString(),
city = row[2].ToString()}.ToJson();
不要忘记命名空间ServiceStack.Text
您还可以创建匿名对象
var obj = jsonString = new {
distance = row[0].ToString(),
descr= row[1].ToString(),
address = row[2].ToString(),
city = row[2].ToString()}
strResponseOutput = JsonConvert.SerializeObject(obj);