我正在尝试从一些JSON代码中获取数组 我从这里得到的是:JSON code source
我有这个,但我不知道如何使输出可用。
empty rdd
size of rdd 1000
我不知道如何从输出中获取 //Some other code above this line
var jsonout = new JavaScriptSerializer().Deserialize<List<Rootobject>>(json);
}
}
//JSON structure
public class Rootobject
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
public string group { get; set; }
public string tracker { get; set; }
public string measureTime { get; set; }
public int minAgo { get; set; }
public float lat { get; set; }
public float lon { get; set; }
public History[] history { get; set; }
}
public class History
{
public float lat { get; set; }
public float lon { get; set; }
public int minAgo { get; set; }
}
,lat
,lon
等。你们这是一个很好的方法吗? (我在C#中使用JSON非常新。)
答案 0 :(得分:1)
您的数据模型错误 - 额外级别Class1
是不必要的。将您的JSON发布到http://json2csharp.com/,您可以获得更正的数据模型,其中RootObject
具有Class1
的属性:
public class History
{
public double lat { get; set; }
public double lon { get; set; }
public int minAgo { get; set; }
}
public class RootObject
{
public string group { get; set; }
public string tracker { get; set; }
public string measureTime { get; set; }
public int minAgo { get; set; }
public double lat { get; set; }
public double lon { get; set; }
public List<History> history { get; set; }
}
然后做:
var jsonout = new JavaScriptSerializer().Deserialize<List<RootObject>>(json);
foreach (var root in jsonout)
{
Console.WriteLine(root.measureTime); // For instance.
Console.WriteLine(root.lat); // For instance.
Console.WriteLine(root.lon); // For instance.
}
答案 1 :(得分:0)
您正在反序列化错误的类型。您没有Rootobject
的集合,只有一个Rootobject
包含Class1
的集合。
var jsonout = new JavaScriptSerializer().Deserialize<Rootobject>(json);
此时只需使用对象表示法。
foreach(var thing in jsonout.Property1)
{
thing.lat;
thing.lon;
}
答案 2 :(得分:0)
您可以声明这样的通用类
public class Class1
{
public string group { get; set; }
public string tracker { get; set; }
public string measureTime { get; set; }
public int minAgo { get; set; }
public float lat { get; set; }
public float lon { get; set; }
public List<History> history { get; set; }
public List<History> GetListHistories(){
return history;
}
}
public class History
{
public float lat { get; set; }
public float lon { get; set; }
public int minAgo { get; set; }
}
像这样实施
var jsonout = new JavaScriptSerializer().Deserialize<List<Class1>>(json);
foreach(var item in jsonout)
{
console.Write(item.gruop);
console.Write(item.tracker);
// more properties
// and:
List<History> list = item.GetListHistories();
foreach(var l in list)
{
console.Write(l.lat);
console.Write(l.lon);
}
}