我有一些json格式,使用它创建了一个带有属性的类。
以下是我的 json 数据格式:
[{
coordinates: [-74, 40.7],
values: [22.4, 23.2, 21.5, 20.6,12.3],
},
{
coordinates: [-77, 38.90],
values: [13.4, 18.2, 24.5, 10.6, 16.3],
},
{
coordinates: [-87, 41.88],
values: [39.3, 28.8, 10.4, 20.0, 0],
}]
下面是我从 json 数据创建的类:
public class MapDataList
{
public List<double> coordinates { get; set; }
public List<double> values { get; set; }
}
我必须为坐标和值属性设置值,如下所示:
坐标: [-74, 40.7], 值:[22.4, 23.2, 21.5, 20.6,12.3],
这样我就可以在我的地图中使用这个值。
我创建了一个方法并尝试了以下方法:
public List<MapDataList> CreateMapData()
{
List<MapDataList> lstMapData = new List<MapDataList>();
MapDataList mdl = new MapDataList();
List<double[]> lb1=new List<double[]>();
double[] coordinateItem1 = {-74, 40.7};
lb1.Add(coordinateItem1);
return lstMapData;
}
但这里的问题是我必须将 lb1 对象数据设置为 lstMapData 对象。
我正在更新这个答案,但你应该知道:目前还不清楚你想做什么。
我做了一个新的小提琴。这样做的是:
从- 您提供的 JSON 中创建
MapDataList
列表。 - 为坐标创建 IEnumerable 的双精度值,并为值创建一个 IEnumerable 的双精度值。
我做了最后一件事,因为你问题的标题似乎表明你需要一个双打列表,同时有一个双数组列表。
如果这不是您所需要的,请更清楚!
法典:
public class Program
{
public static void Main()
{
var json = "[{ coordinates: [-74, 40.7], values: [22.4, 23.2, 21.5, 20.6,12.3], }, { coordinates: [-77, 38.90], values: [13.4, 18.2, 24.5, 10.6, 16.3], }, { coordinates: [-87, 41.88], values: [39.3, 28.8, 10.4, 20.0, 0], }]";
var mapDataLists = JsonConvert.DeserializeObject<List<MapDataList>>(json);
var coordinates = mapDataLists.SelectMany(d => d.coordinates);
var values = mapDataLists.SelectMany(d => d.values);
Console.WriteLine("Coordinates");
foreach(var d in coordinates){
Console.WriteLine(d);
}
Console.WriteLine("Values");
foreach(var d in coordinates){
Console.WriteLine(d);
}
}
}
public class MapDataList
{
public List<double> coordinates { get; set; }
public List<double> values { get; set; }
}
请看这个小提琴并亲自尝试: https://dotnetfiddle.net/C48r6T
对象初始值设定项是一个有用的概念。
对象初始值设定项允许您在创建时将值分配给对象的任何可访问字段或属性,而无需调用构造函数,后跟赋值语句行。
源
- 使用 MapDataList 对象初始值设定项创建它
- 使用列表对象初始值设定项将 mdl 包装到新列表中
此外,将数组(或任何集合(转换为列表的最简单方法是使用.ToList()
方法从System.Linq;
法典:
public static List<MapDataList> CreateMapData(double[] coordinates, double[] values )
{
MapDataList mdl = new MapDataList
{
Coordinates = coordinates.ToList(),
Values = values.ToList()
};
return new List<MapDataList> { mdl };
}
在线试用!
请注意,您甚至可以删除 mdl 并写入
public static List<MapDataList> CreateMapData(double[] coordinates, double[] values )
{
return new List<MapDataList> { new MapDataList
{
Coordinates = coordinates.ToList(),
Values = values.ToList()
}};
}