从 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 语句以确保它被正确处理。