使用以下代码将json字符串写入文件时,在编辑文件时它不会以漂亮的格式显示,而只是以字符串格式显示。如果我使用.Net小提琴,则控制台输出正确且看起来不错。我如何将json字符串写入文件,因此在编辑/ w时说notepad ++时,它以漂亮的格式显示。有人可以帮忙吗?
.Net Fiddle代码用于控制台输出,效果很好
public class Program
{
public static void Main()
{
String sPrettyStr;
var item = "{\"messageType\":\"0\",\"code\":\"1\"}";
sPrettyStr = JValue.Parse(item).ToString(Newtonsoft.Json.Formatting.Indented);
Console.WriteLine(sPrettyStr);
}
}
.Net Fiddle控制台输出
{
"messageType": "0",
"code": "1"
}
但是使用此格式的json字符串写入文件时
File.WriteAllText(c:/test.json,JValue.Parse(item).ToString(Newtonsoft.Json.Formatting.Indented))
使用记事本++编辑时,我得到此文件输出
"{\\\"messageType\\\":\\\"0\\\",\\\"code\\\"}"
答案 0 :(得分:0)
有了雄鹰并尝试自己之后,这就是我发现的: 您首先必须反序列化该字符串,然后再次对其进行序列化。
编辑:也接受了您的代码,并获得了所需的输出,就像其他评论中所说的那样。我调整了使用JToken而不是JValue的方法,一切都很好。
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace StackOverflow
{
class Program
{
static void Main(string[] args)
{
var item = "{\"messageType\":\"0\",\"code\":\"1\"}";
var t = JsonConvert.DeserializeObject(item);
var x = JsonConvert.SerializeObject(t, Formatting.Indented);
string sPrettyStr;
var item2 = "{\"messageType\":\"0\",\"code\":\"1\"}";
sPrettyStr = JToken.Parse(item2).ToString(Formatting.Indented);
Console.WriteLine(x);
Console.WriteLine(sPrettyStr);
Console.ReadLine();
}
}
}
从here到弗兰克的信用
答案 1 :(得分:0)
尝试以下代码:
_id