我有一个数据库类,它调用数据库并检索数据。数据被加载到DataTable
对象与SqlDataAdapter
。然后,我只想获取第一行数据(事实上,数据库无论如何都只会返回一行)并将其转换为 JSON 字符串。
问题是这样的:如果我只是通过DataTable
进入JsonConvert.SerializeObject
方法,例如JsonConvert.SerializeObject(dt)
,我得到一个 JSON 字符串,但它是一个包含一个对象的数组。例如:
[ {"id":"1","value":"hi"} ]
另一端期望接收此 JSON 的代码不需要数组,它只需要一个对象。所以基本上我需要上面的内容,但没有方括号[
and ]
。所以期望的输出是:
{"id":"1","value":"hi"}
我现在使用的天真的方法就是返回result.Substring(1,result.Length - 2)
给来电者。假设 JSON 对象存在于只有一个对象的单个数组中,这会产生剥离[
and ]
关闭返回文本。但似乎应该有一种“正确”的方法来实现这一目标。
最明显的事情似乎是使用Rows
数据表的属性。但是,如果我尝试这样做JsonConvert.SerializeObject(dt.Rows[0])
,我不只得到行,我得到有关行状态的整个数据集合,其中一项是Table
但它只是引用整个表,因此如果发生多于一行,我将获得所有行,而不仅仅是我想要的行。
我尝试过的另一种方法是从整个数据往返 JSONDataTable
。我将其序列化DataTable
,然后将结果解析为JArray
这样我就可以获得第一个值,然后再次重新序列化。但这似乎没有必要。
这是尝试序列化的内容Row
对象给了我:
{
"RowError":"",
"RowState":2,
"Table":[
{
"id":"1",
"value":"hello"
}
],
"ItemArray":[
"1","hello"
],
"HasErrors":false
}
我可以用“正确”的方式做到这一点而不只是剥离[
and ]
脱离弦?换句话说,我可以从a的一行中获取数据吗?DataTable
作为单个 JSON 对象,而不是在数组中,无需往返 JSON 并再次返回,只是为了将其从单项数组中取出?