0

我正在尝试从 android 应用程序调用 ApiController。这是 api 控制器:

[AcceptVerbs("GET", "POST")]        
public string Get(string coords)      
{
  using (var context = new Entities())
  {
          var records = from poi in context.Pois
                     where poi.Latitude >= fromLatitude &&
                           poi.Latitude <= toLatitude &&
                           poi.Longitude >= fromLongitude &&
                           poi.Longitude <= toLongitude
                     select new
                     {
                         poiName = poi.Name,
                         poiLatitude = poi.Latitude,
                         poiLongitude = poi.Longitude
                     };

          return JsonConvert(records);
      }
  }
}

private string JsonConvert(object records)
{
    return Newtonsoft.Json.JsonConvert.SerializeObject(records,);
}

在 android 代码中,我正在使用新的 JSON(字符串)创建 json 数组。问题是 java 抛出异常:json 字符串无效。当我查看调试器时,我看到字符串在 " 之前有 2 个反斜杠,而 java 不知道如何解析它。

问题出在哪里?谢谢

更新:已解决。WebApi 以 json 作为字符串返回 XML。将 WebApi 更改为不返回 XML,然后将其更改为返回对象(并删除了 JSONConvert) - 它可以工作。

4

1 回答 1

0

我知道这是一个老问题,但我遇到了类似的问题并找到了解决方案。

在我的情况下,我必须将一个复杂的 JSON 对象(嵌套)从一个 .NET 客户端传递给一个 Java Rest API,并且使用了一个字符串参数,由于双反斜杠(我将它序列化,所以它是转义,然后 .NET 在发送之前再次对其进行转义)。

所以,为了避免我使用 StringContent

MyType obj = new MyType()
{
...
};

string obJSON = JsonConvert.SerializeObject(obj);
StringContent sc = new StringContent(obJSON, Encoding.UTF8,"application/json");
HttpResponseMessage response = client.PostAsync(ruta, sc).Result;

希望这对某人有帮助!

于 2016-07-18T16:38:11.973 回答