我对使用C#的JSON很新(使用VS2017)。尝试通过代码访问此对象的每个元素(例如,获取字符串"Obj1"
,"Obj2"
,"Obj3"
,然后是每个成员的值(ID和名称)。
我事先并不知道有多少" ObjX"会有或他们的名字。我试图将此列表加载到某个类中,然后将其转换为CSV(或SQL插入)。
尝试使用JSON.net和JsonFx,但我认为除了强力字符串操作函数之外,我的技能还不足以理解如何执行此操作。有人可以帮忙吗?
{
"OBJ1":{
"id":1,
"name":"Name1",
},
"OBJ2":{
"id":2,
"name":"Name2",
},
"OBJ3":{
"id":3,
"name":"Name3",
}
}
答案 0 :(得分:1)
创建一个具有两个属性的类MyClass,int Id和string Name。
public class MyClass
{
public int Id {get; set;}
public string Name {get;set;}
}
然后,根据您的操作方式,您可以将其deserilize到Dictionary或创建具有三个MyClass属性的MyClassRoot对象。
我推荐使用Dictionary方法。
如果使用Dictionary方法,如果将更多属性添加到JSON,则代码仍然有效。如果您使用MyClassRoot
解决方案,则需要在json更新时将相应的属性添加到MyClassRoot。
然后使用JSON.Net,您可以像这样反序列化对象。
var result = JsonConvert.DeserializeObject<Dictionary<string, MyClass>>(json);
“OBJ1”,“OBJ2”等将成为字典中的键,您可以访问如下值:
var obj1 = result["OBJ1"];
var obj1Name = obj1.Name;
var obj1Id = obj1.Id;
要将所有MyClass
个对象添加到列表中,只需执行以下操作:
var list = result.ToList();
MyClassRoot方法(根本不推荐,只是一个POC):
public class MyClassRoot
{
public MyClass Obj1 {get;set;}
public MyClass Obj2{get;set;}
public MyClass Obj3{get;set;}
}
var result = JsonConvert.DeserializeObject<MyClassRoot>(json);
var obj1Name = result.Obj1.Name;
var obj1Id = result.Obj1.Id;