对象(或数组)的C#JSON

时间:2017-07-31 15:44:09

标签: c# json deserialization

我正在尝试使用newtonsoft包从JSON文件(具有多边形坐标的STL文件的一部分)到数组或对象的pos'x'和'y',但是没有成功。

查看原始文件并按JSON online

转换

我已阅读this,但却给了我很多错误。

你能给我一些提示或示例吗?

提前致谢

  try 
  {
      using (StreamReader reader = new StreamReader("test.json"))
      {
          json = reader.ReadToEnd();
          List<vertex> items = JsonConvert.DeserializeObject<List<vertex>>(json);
      }

      dynamic array = JsonConvert.DeserializeObject(json);
             foreach (var vert in array)
             {
                 Console.WriteLine("{0} {1}",  vert.x, vert.y);
             }
  }
  catch(Exception ex)
  {
      MessageBox.Show(ex.ToString());
  } 

  public class vertex
  {
      public double x,y;
  }

2 个答案:

答案 0 :(得分:0)

用于反序列化到您正在使用的类中的文件应采用

格式
[{ "x" : 1.3214, "y" : 0.13241},{ "x" : 3.4324, "y" : 0.324}]

为了反序列化你拥有的文件,它应该有一个类:

 public class Coordinates {
   public decimal Z { get; set; }
   public List<Point> Polygons { get; set; }
 }
 public class Point{
  public List<vertex> points { get; set; } 
 }
 public class vertex{
   public List<decimal> Vertices { get; set; }
   public decimal x { get {return Vertices?[0]} }
   public decimal y { get {return Vertices?[1]} }
 }

答案 1 :(得分:0)

这非常有效;)

public class Polygonn
    {
        public List<List<double>> points { get; set; }
        public string type { get; set; }
    }

    public class RootObject
    {
        public double z { get; set; }
        public List<Polygonn> polygons { get; set; }
    }


string data = System.IO.File.ReadAllText("backup.json");
 RootObject json = JsonConvert.DeserializeObject<RootObject>(data);
 json.polygons[polygon].points[0].ElementAt(0)

谢谢大家! 此致