从 SQL 服务器读取 JSON
Reading JSON from SQL Server
我有一个 SQL 查询,其中有多个子 FOR JSON 路径,最后有一个 FOR JSON 路径。形成的JSON比较大。
但是,当我尝试从 C# 读取 JSON 时,JSON 未正确显示。下面的 C# 代码从 SQL 服务器
读取 JSON
var queryWithForJson = "EXEC TEST_SP";
var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString);
var cmd = new SqlCommand(queryWithForJson, conn);
cmd.CommandTimeout = 0;
conn.Open();
var jsonResult = new StringBuilder();
var reader = cmd.ExecuteReader();
if (!reader.HasRows)
{
jsonResult.Append("[]");
}
else
{
while (reader.Read())
{
jsonResult.Append(reader.GetValue(0).ToString());
}
}
reader.Close();
System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\file.json");
file.WriteLine(jsonResult.ToString());
创建的 JSON 文件结尾为:
"Det":[{"id":3700159,"address":"601 Union St Seattle, WA 98
如您所见,JSON 没有正常结束。
知道为什么会这样吗?
在您的文件中使用 using
语句。当我没有这样做时,我复制了你的问题。
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\file.json"))
{
file.Write(jsonResult.ToString());
}
在进一步研究之后,如果您刷新 StreamWriter,您似乎也会得到正确的结果。您可以使用 file.AutoFlush = true;
或 file.Flush();
来做到这一点。无论您选择如何完成此操作,无论如何您都应该在 StreamWriter 周围使用 using 语句以确保它被正确处理。
我有一个 SQL 查询,其中有多个子 FOR JSON 路径,最后有一个 FOR JSON 路径。形成的JSON比较大。 但是,当我尝试从 C# 读取 JSON 时,JSON 未正确显示。下面的 C# 代码从 SQL 服务器
读取 JSON var queryWithForJson = "EXEC TEST_SP";
var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString);
var cmd = new SqlCommand(queryWithForJson, conn);
cmd.CommandTimeout = 0;
conn.Open();
var jsonResult = new StringBuilder();
var reader = cmd.ExecuteReader();
if (!reader.HasRows)
{
jsonResult.Append("[]");
}
else
{
while (reader.Read())
{
jsonResult.Append(reader.GetValue(0).ToString());
}
}
reader.Close();
System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\file.json");
file.WriteLine(jsonResult.ToString());
创建的 JSON 文件结尾为:
"Det":[{"id":3700159,"address":"601 Union St Seattle, WA 98
如您所见,JSON 没有正常结束。 知道为什么会这样吗?
在您的文件中使用 using
语句。当我没有这样做时,我复制了你的问题。
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\file.json"))
{
file.Write(jsonResult.ToString());
}
在进一步研究之后,如果您刷新 StreamWriter,您似乎也会得到正确的结果。您可以使用 file.AutoFlush = true;
或 file.Flush();
来做到这一点。无论您选择如何完成此操作,无论如何您都应该在 StreamWriter 周围使用 using 语句以确保它被正确处理。