我已经从我的数据库的2个颜色创建了MVC应用程序中JArray的JSON文件。但有两个问题: 1.文件的格式。它为每个对象都有额外的括号。
PBKDF2
我想要它:
[
[
{
"Code": "1",
"Name": "ASSETS"
}
],
[
{
"Code": "2",
"Name": "LIABILITIES"
}
],
[
{
"Code": "3",
"Name": "CAPITAL"
}
],
[
{
"Code": "4",
"Name": "REVENUE"
}
]
]
我已经从数据库中加载了JArray中的值,然后将其添加到另一个JArray中。我正在使用2 for循环。 1用于为5000个条目制作JArray。第二个用于从数据库返回下一个有效的主键。但问题是,处理循环并返回JSON文件需要15分钟以上。为什么会有这么多延迟?我怎样才能快速完成它。这是代码。 int idd = 0; JArray Array = new JArray();
[
{
"Code": "1",
"Name": "ASSETS"
},
{
"Code": "2",
"Name": "LIABILITIES"
},
{
"Code": "3",
"Name": "CAPITAL"
},
{
"Code": "4",
"Name": "REVENUE"
}
]
当我尝试第一个循环100个条目时,返回文件大约需要60秒。
答案 0 :(得分:0)
尝试:
public class RootObject
{
public string Code { get; set; }
public string Name { get; set; }
}
var o = new List<RootObject>();
for (var i = 0; i < 100; ++i)
{
o.Add(new RootObject
{
Code = "foo",
Name = "bar"
});
}
var v = JsonConvert.SerializeObject(o);
我的列表到Serialize
大约需要274毫秒。
答案 1 :(得分:0)
我删除了所有循环,而是尝试在查询中解决它并制作单个数组。
var k = (from coa in db.MSTs
select new { S2 = coa.S2, S1 = coa.S1 }).ToList().
Select(x => new MST { S2 = x.S2, S1 = x.S1 }).ToList();
JArray Arrayone = new JArray(
k.Select(p => new JObject
{
{ "Code", p.S1 },
{ "Name", p.S2 },
})
);
string jsonfile = JsonConvert.SerializeObject(Arrayone,Formatting.Indented);
string path = @"C:\Users\Awais\Desktop\accounts.json";
System.IO.File.WriteAllText(path, jsonfile);
它解决了这两个问题。即括号格式问题和延迟。现在有了这段代码,它可以在不到5秒的时间内完成
答案 2 :(得分:0)
通过使用匿名类型对JSON进行建模,您可以像这样完成它:
var array = (from coa in db.MSTs
select new { Code = coa.S2, Name = coa.S1 }).ToArray();
string jsonfile = JsonConvert.SerializeObject(array, Formatting.Indented);
string path = @"C:\Users\Awais\Desktop\accounts.json";
System.IO.File.WriteAllText(path, jsonfile);
10万件物品花了我319毫秒。