如何格式化单行JSON字符串

时间:2019-05-23 08:04:35

标签: c# .net json

我正在Visual Studio中创建一个GUI,该GUI将从API提取JSON数据以在文本框中显示,并且希望将其显示为具有格式,以便可读。

我尝试使用Newtonsoft.Json库来解决此问题,但是似乎它不能在一种JSON衬板上工作,并且必须采用包含不同类型JSON数据的对象。

using (WebClient wc = new WebClient())
{
    string API_Key = "000000000000000000000"; // URL with API key containing the JSON data

    string JSON_Data_URL = $"https://www.nobil.no/api/server/datadump.php?apikey={API_Key}&countrycode=NOR&fromdate=2005-01-01&format=json";
    LoadJSON.Increment(-100); // Reset loadbar
    string JSON_Data = JsonConvert.SerializeObject(wc.DownloadString(JSON_Data_URL), Formatting.Indented); // Format JSON data

    DataResults.Text = JSON_Data; // Add JSON data to textbox
    LoadJSON.Increment(100); // Display when the JSON data is fetched
}

我认为它会输出格式化的JSON字符串,但似乎它只是在JSON中添加反斜杠。我还尝试用新行和4个空格替换反斜杠,但这看起来也不对。

修改

这不是重复的,因为问题似乎是我需要将字符串转换为对象。

1 个答案:

答案 0 :(得分:3)

问题是,您正在序列化字符串而不是对象。

string JSON_Data = "..." // Get your json from your API
object JSON_Object = JsonConvert.DeserializeObject(JSON_Data);
string JSON_Data_Formatted = JsonConvert.SerializeObject(JSON_Object, Formatting.Indented);