2017-08-02 451 views
0

我看了其他幾個問題如this但我的問題是不兼容的。C# - JsonConvert.SerializeObject返回空JSON字符串

我有一個List<LatLng>fireHazardsList,我想轉換成JSON字符串。 A 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); 

我肯定缺少一個步驟,找到了class,但我是新來的JSON和不確定,我錯過了什麼。目前,我正在返回我JSON字符串是這樣的:

[{},{},{}] 

這裏是在我的名單正在填充SerializeObject()函數被調用之前的屏幕截圖。

enter image description here

+0

可以添加'LatLng'類 –

+0

的類屬性是什麼populateHazardList後fireHazardsList.Any()的返回?如果屬實,則需要爲LatLng提供代碼。 – Mick

+0

你可以添加json字符串和'LatLng'類的屬性嗎? –

回答

2

最有可能的LatLng類沒有get;set;性能,這就是爲什麼JSON渲染是空的。

嘗試使用此方法動態創建的屬性:

string coordinates = JsonConvert.SerializeObject(
    fireHazardsList.Select(ll => new { ll.latitude, ll.longitude }), 
    Formatting.Indented); 
+0

謝謝,我會試試這個 –

-1

下面的代碼和平正常工作對我來說: -

List<LatLng> l = new List<LatLng>() ; 
     l.Add(new LatLng { latitude=0.090f, longitude=90.8f}); 
     string s = JsonConvert.SerializeObject(l); 

下面是我的經緯度類

​​
0

您的問題是在某處populateHazardList();這並不是像你期望的那樣填充數據。您看到這一點的事實:

[{},{},{}] 

...顯示序列化正確發生,但沒有數據。你需要弄清楚爲什麼。

+0

謝謝克里斯,我已經更新了我的答案,表明我的列表絕對是人口稠密 –

0

先建立正確的JSON你需要準備相應的模型:

[DataContract] 
    public class LatLang 
    { 
    [DataMember(Name = "lat")] 
     public string Latitude { get; set; } 

     [DataMember(Name = "longi")] 
     public string Longitude { get; set; } 
    } 

爲了能夠使用數據的屬性,你需要選擇一些其他的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" 
} 
}