c# - C# 将 JSON 写入不带反斜杠的文件
问题描述
我正在开发一个将某些数据写入 JSON 文件的控制台应用程序。问题是 VS 用来转义字符串中的字符的反斜杠正在写入文件中。我确实在stackoverflow上发现了一个类似的问题,但是那个人序列化了两次,导致了这个问题。我不认为这是我的情况(除非我遗漏了什么),这就是为什么我在这里创建了一个单独的问题。
我试过做 string.Replace("\","") 但由于反斜杠实际上并不存在(因为它只是 VS 转义双引号),这无济于事。
我有一个名为 listItem 的类,它有一些属性;
class ListItem
{
public string title;
public string textline;
public string docuType;
}
我有一个类 SPList,包含这些 ListItems 的列表;
class SPList
{
public string listTitle;
public List<ListItem> listItems;
}
我有一个使用 2 个列表写入 JSON 文件的示例;
[
{
"listTitle": "\"Another List\"",
"listItems": [
{
"title": "\"Here\"",
"textline": "\"Another test value\"",
"docuType": null
},
{
"title": "\"Look at this\"",
"textline": "\"It's another value for testing\"",
"docuType": null
}
]
},
{
"listTitle": "\"Sample List\"",
"listItems": [
{
"title": "\"Sample value\"",
"textline": null,
"docuType": "\"Analyse\""
},
{
"title": "\"Sample value 2\"",
"textline": null,
"docuType": "\"IetsAnders\""
},
{
"title": "\"SampleValue3!\"",
"textline": null,
"docuType": "\"Offerte\""
}
]
}
]
最后,我用来实现这一点的代码;
Task <List<string>>listIDs = GetListIDs();
listIDs.Wait();
foreach (string id in listIDs.Result)
{
Task<string> lijstTitel = GetListTitle(id);
lijstTitel.Wait();
Task<List<string>> listitemIDs = GetItemIDs(id);
listitemIDs.Wait();
// Write all the items here
foreach (string itemID in listitemIDs.Result)
{
Task<ListItem> itempje = GetItem(itemID, id);
itempje.Wait();
listItems.Add(itempje.Result);
}
list.Add( new SPList{
listItems = listItems,
listTitle = lijstTitel.Result
});
listItems = new List<ListItem>();
}
string json = JsonConvert.SerializeObject(list, Formatting.Indented);
System.IO.File.WriteAllText(path, json);
在我发现的类似问题的另一个示例中,该人将他的 JSON 对象序列化了两次,“导致了这个问题的发生。因为我认为我只序列化一次,它是否与我正在使用 Tasks 的事实有关,或者完全是别的什么?
解决方案
问题不在于反斜杠\
,而在于引号"
。看起来您正在序列化的数据已经被引用。
如果您可以删除反斜杠,您仍然会在输出中出现双引号""
。
推荐阅读
- python - 为什么一维 CNN 在时间序列上的准确率很低?
- android - 将 APK 上传到 Google Play 商店时出现问题
- javascript - 根据滚动位置更改内容
- google-visualization - ArrayToDataTable 不接受日期时间类型
- javascript - ReactJs 中的 this 关键字以及我们为什么会失去上下文
- javascript - 新手-获取以太坊最新区块的 API
- c++ - 将任意对象附加到数组有什么问题?
- javascript - ipcRenderer 没有收到消息
- java - 用于 Hibernate 的 Kotlin 包级 TypeDefs
- powerbi - Power BI 安全嵌入式报表登录在某些浏览器上不起作用(windows chrome)