首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Asp.Net MVC中序列化后返回Json数组

如何在Asp.Net MVC中序列化后返回Json数组
EN

Stack Overflow用户
提问于 2015-12-11 23:39:05
回答 1查看 1.3K关注 0票数 0

我有一个Action,我使用它来使用GeoJson返回GeoJson.Net数据。行动方法如下:

代码语言:javascript
复制
public ActionResult GetWorldGeometry()
{
    var worldgeo = (from w in _bdEntities.worlds1 select w);
    foreach (var w in  worldgeo )
    {
        var world = SqlGeometry.STGeomFromText(new SqlChars(w.geom.AsText()), 4326);
        var worldGeometry = world.ToGeoJSONGeometry();
        var worldFeatureProperties = new Dictionary<string, object>
        {
            {"Name", w.NAME},
            {"Population(05)", w.POP2005},
            {"Region", w.REGION},
            {"ISO2", w.ISO2},
            {"ISO3", w.ISO3},
            {"Area", w.AREA}
        };
        var feature = new Feature(worldGeometry, worldFeatureProperties);

        var serializedData = JsonConvert.SerializeObject(feature, Formatting.Indented,
            new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver(),
                NullValueHandling = NullValueHandling.Ignore
            });

        return Content(serializedData, "application/json");
    } 
    return null;
}

在我看来,我想将这个GeoJson绘制成传单或OpenLayers,但是我目前正在使用下面的代码测试Action方法的输出:

代码语言:javascript
复制
        <div>
           <p>
             <span id="add_here"></span>
           </p>
         </div>

         @section scripts
           {
            <script>
              $.ajax({
                  url: '@Url.Action("GetJsonResult", "Home")',
                  dataType: "json", 
                  type: "GET", 
                  contentType: 'application/json; charset=utf-8',
                  cache: false, 
                  data: {}, 
                  traditional: true,
                  success: function(data) {
                  var reslen = data.length;
                  alert(reslen);
                  var result = JSON.stringify(data);
                  alert(result);
                  $('#add_here').text(result);
                       },
                  error: function(xhr) {
                  alert('error');
                       }
                    });
                </script>
               }

我没有得到一个数据数组,而是得到了第一个警告结果长度的result.On,它写着“未定义”。在我的视图中,如何获得由Action方法中的查询返回的所有数据?下面是返回的单个结果的片段和警告消息:输出结果

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-12 00:12:45

这是你什么,我希望它会成功,没有测试出来。

代码语言:javascript
复制
    public class WorldFeatureProperties
    {
        public string Name { get; set; }
        public string Population05 { get; set; }
        public string Region { get; set; }
        public string ISO2 { get; set; }
        public string ISO3 { get; set; }
        public string Area { get; set; }
        public string WorldGeometry { get; set; }
    }


    public ActionResult GetWorldGeometry()
    {
        var worldgeo = (from w in _bdEntities.worlds1 select w);

        var retval = new List<WorldFeatureProperties>();



        foreach (var w in worldgeo)
        {

            var currentLocation = JsonConvert.DeserializeObject<WorldFeatureProperties>(w);

            currentLocation.WorldGeometry = WorldGeometry.STGeomFromText(new SqlChars(w.geom.AsText()), 4326).ToGeoJSONGeometry();

            retval.Add(currentLocation);
       }

        var serializedData = JsonConvert.SerializeObject(retval, Formatting.Indented,
              new JsonSerializerSettings
              {
                  ContractResolver = new CamelCasePropertyNamesContractResolver(),
                  NullValueHandling = NullValueHandling.Ignore
              });
        return Json(serializedData, JsonRequestBehavior.AllowGet);

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34234326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档