c# - 删除外括号并用数字命名对象?
问题描述
我对 json 感到非常困惑(我还在学习 json )。
我想要的 JSON:
{ "entityMap": {
"0": {
"type": "LINK",
"mutability": "MUTABLE",
"data": {
"url": "https://stackoverflow.com/"
}
},
"1": {
"type": "LINK",
"mutability": "MUTABLE",
"data": {
"url": "https://stackoverflow.com/"
}
},
"2": {
"type": "LINK",
"mutability": "MUTABLE",
"data": {
"url": "https://stackoverflow.com/"
}
},
"3": {
"type": "LINK",
"mutability": "MUTABLE",
"data": {
"url": "https://stackoverflow.com/"
}
}
}
}
那被认为是坏的json吗?以及如何用这样的数字命名json?
到目前为止,这是我得到的。
{
"entityMap": [
{
"type": "LINK",
"mutability": "MUTABLE",
"data": {
"url": "https://stackoverflow.com/"
}
},
{
"type": "LINK",
"mutability": "MUTABLE",
"data": {
"url": "https://stackoverflow.com/"
}
},
{
"type": "LINK",
"mutability": "MUTABLE",
"data": {
"url": "https://stackoverflow.com/"
}
}
]
}
这是我的课
public class editorRawTest
{
public List<entityMapItem> entityMap { get; set; }
}
public class entityMapItem
{
public string type { get; set; }
public string mutability { get; set; }
public entityMapItemData data { get; set; }
}
public class entityMapItemData
{
public string url { get; set; }
}
我的执行代码:
var map = new List<entityMapItem>();
var mapitem = new entityMapItem() { type = "LINK", mutability = "MUTABLE", data = new entityMapItemData() { url = "https://stackoverflow.com/" } };
map.Add(mapitem);
map.Add(mapitem);
map.Add(mapitem);
editorRawTest bc = new editorRawTest() { entityMap = map };
string JSONresult = JsonConvert.SerializeObject(bc);
string path = @"jsonmapdata.json";
using (var tw = new StreamWriter(path, true))
{
tw.WriteLine(JSONresult.ToString());
tw.Close();
}
通过谷歌和stackoverflow搜索没有运气。任何线索或帮助将不胜感激。
谢谢你。
解决方案
要获得第一个 JSON,您需要将您的替换List<entityMapItem>
为Dictionary<string, entityMapItem>
,如下所示:
public class editorRawTest
{
public Dictionary<string, entityMapItem> entityMap { get; set; }
}
然后你需要像这样填充它:
var map = new Dictionary<string, entityMapItem>();
var mapitem = new entityMapItem() { type = "LINK", mutability = "MUTABLE", data = new entityMapItemData() { url = "https://stackoverflow.com/" } };
for (int i = 0; i < 4; i++)
{
map.Add(i.ToString(), mapitem);
}
但我不鼓励你这样做,除非你必须这样做。您现在拥有的(列表中的第二个 JSON)更容易使用。如果您在两者之间进行选择,最好选择第二种方法。请参阅使用 json key to store value,这是一个好方法吗?为什么。
推荐阅读
- python - 可以或如何在 Google Cloud Functions 上使用 Python asyncio?
- sql - Laravel Eloquent ->take(5) 如果结果较少,则不起作用
- php - 用 fancybox 显示帖子内容
- ios - 如何从我的应用程序中打开亚马逊应用程序?
- apache - 如何使用 Firebase 验证对 Apache 服务器的请求
- python - PYTHON:如何使用 tkinter 将两个标签锚定到顶部
- json - 如何在 Json 中为 Azure 数据工厂 V2 上的此 REST_API 编写文件路径
- python - str.split(r'\n') 不会按预期在原始字符串文字中的换行符上拆分字符串
- java - Spring-Boot:DevTools 不刷新文件
- mongodb - 如何将数据库从 ec3 实例 mongodb 复制到本地计算机