我已经查看了其他几个问题,例如this,但我的问题不兼容。
我有List<LatLng>
名为fireHazardsList
,我想将其转换为JSON字符串。 LatLng
对象有float latitude, longitude
。我正在尝试使用JsonConvert.SerializeObject
将List
转换为JSON string
,但目前我的JSON
在运行此代码时为空。
LatLng
是在Xamarin Android.Gms.Maps.Model;
fireHazardsList = new List<LatLng>();
populateHazardList();
string coordinates = JsonConvert.SerializeObject(fireHazardsList, Formatting.Indented);
我肯定错过了一步,但我是JSON的新手并且不确定我缺少什么。目前我正在返回的JSON字符串是这样的:
[{},{},{}]
这是一个屏幕截图,显示我的列表正在调用SerializeObject()
函数之前填充。
答案 0 :(得分:2)
LatLng
类很可能没有get;set;
属性,这就是JSON渲染为空的原因。
尝试此操作即时创建属性:
string coordinates = JsonConvert.SerializeObject(
fireHazardsList.Select(ll => new { ll.latitude, ll.longitude }),
Formatting.Indented);
答案 1 :(得分:0)
你的问题出在populateHazardList();这并不像您期望的那样填充数据。你看到这个的事实:
[{},{},{}]
...表明序列化正确发生,但没有数据。你需要找出原因。
答案 2 :(得分:0)
要首先创建正确的JSON,您需要准备适当的模型:
[DataContract]
public class LatLang
{
[DataMember(Name = "lat")]
public string Latitude { get; set; }
[DataMember(Name = "longi")]
public string Longitude { get; set; }
}
为了能够使用Data属性,您需要选择其他一些JSON序列化程序。例如DataContractJsonSerializer或Json.NET。
LatLang latlangObj = new LatLang
{
Latitude = "something",
Longitude = "something"
};
string jsonString = JsonConvert.SerializeObject(
new
{
jsonString = latlangObj
});
所以jsonString变量将是:
{
"jsonString ": {
"lat": "something",
"longi": "someting"
}
}
答案 3 :(得分:-1)
以下代码的和平正确地为我工作: -
List<LatLng> l = new List<LatLng>() ;
l.Add(new LatLng { latitude=0.090f, longitude=90.8f});
string s = JsonConvert.SerializeObject(l);
以下是我的LatLng课程
public class LatLng
{
public float latitude { get; set; }
public float longitude { get; set; }
}