代码之家  ›  专栏  ›  技术社区  ›  Barney Chambers

C#-JsonConvert。SerializeObject返回空JSON字符串[重复]

  •  0
  • Barney Chambers  · 技术社区  · 8 年前

    我已经研究了其他几个问题,例如 this

    List<LatLng> 打电话 fireHazardsList LatLng 对象具有 float latitude, longitude .我正在尝试使用 JsonConvert.SerializeObject 转换我的 List 变成一个 JSON string 但目前我的 JSON

    车床 class Android.Gms.Maps.Model;

    fireHazardsList = new List<LatLng>();
    populateHazardList();
    string coordinates = JsonConvert.SerializeObject(fireHazardsList, Formatting.Indented); 
    

    我肯定错过了一个步骤,但我对JSON是新手,不确定我错过了什么。当前返回的JSON字符串如下:

    [{},{},{}]
    

    这是一个屏幕截图,显示我的列表在 SerializeObject()

    enter image description here

    4 回复  |  直到 8 年前
        1
  •  3
  •   devio    8 年前

    最有可能的是 LatLng 类没有 get;set; 属性,这就是JSON呈现为空的原因。

    尝试此操作以动态创建属性:

    string coordinates = JsonConvert.SerializeObject(
        fireHazardsList.Select(ll => new { ll.latitude, ll.longitude }),
        Formatting.Indented);
    
        2
  •  0
  •   Chris Halcrow    8 年前

    [{},{},{}]
    

    …显示序列化正在正确进行,但没有数据。你需要找出原因。

        3
  •  0
  •   alaa_sayegh    8 年前

        [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"
     }
    }
    
        4
  •  -1
  •   Koderzzzz    8 年前

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

    下面是我的拉丁课

    public class LatLng
    {
        public float latitude { get; set; }
        public float longitude { get; set; }
    }