我有一个看起来像这样的JSON
{
"ipv4": null,
"location": {
"lat": "xx.xxx",
"lng": "xx.xxx",
"x": [],
"y": []
},
"time": "05/28/2018 06:10:27"
}
我正在尝试用C#解析它,并将“位置”中的项目放在一层,这样它们与“ipv4”处于同一级别,从而删除“location”。 这应该如下所示
{
"ipv4": null,
"lat": "xx.xxx",
"lng": "xx.xxx",
"x": [],
"y": [],
"time": "05/28/2018 06:10:27"
}
有人可以帮忙吗?
答案 0 :(得分:0)
最简单的方法是拥有两个C#对象,其中一个代表实际的JSON格式,另一个代表新的所需格式。将其反序列化为第一个C#对象,创建所需格式的新对象并将其序列化:
实际JSON结构的类
public class Location
{
public string lat { get; set; }
public string lng { get; set; }
public List<object> x { get; set; }
public List<object> y { get; set; }
}
public class RootObjectOld
{
public object ipv4 { get; set; }
public Location location { get; set; }
public string time { get; set; }
}
所需JSON结构的类
public class RootObjectNew
{
public object ipv4 { get; set; }
public string lat { get; set; }
public string lng { get; set; }
public List<object> x { get; set; }
public List<object> y { get; set; }
public string time { get; set; }
}
使用JSON.Net之类的框架对其进行反序列化:
var old = JsonConvert.DeserializeObject<RootObjectOld>(<YourJson>);
通过复制值创建新对象:
var myNewObject = new RootObjectNew {
ipv4 = old.ipv4,
lat = old.Location.lat,
...
};
将其序列化:
var newJson = JsonConvert.SerializeObject(myNewObject);