【问题标题】:JSON Format from List列表中的 JSON 格式
【发布时间】:2017-08-20 18:49:01
【问题描述】:

我有一个 RESTFul 服务,它返回 JSON 格式的列表。 JSON 格式如下所示:

{
"cantidad": 241,
"reply": "6F5HH",
"location": "15 Azua - IP",
"str": "36%",
"date_Sent": "7/14/2017 9:58:31 AM",
"cant": 14,
"vehiculo": "",
"lc": "356612023737986"
},
{
"cantidad": 241,
"reply": "6F5HH",
"location": "15 Azua - IP",
"str": "36%",
"date_Sent": "7/20/2017 11:46:10 AM",
"cant": 1,
"vehiculo": "",
"lc": "356612023737986"
},
{
"cantidad": 241,
"reply": "5UG71",
"location": "AES NO REGISTRADO",
"str": "36%",
"date_Sent": "8/1/2017 1:35:29 PM",
"cant": 16,
"vehiculo": "",
"lc": "357042063498597"
},
{
"cantidad": 241,
"reply": "9LKYH",
"location": "AES NO REGISTRADO",
"str": "52%",
"date_Sent": "8/1/2017 1:38:09 PM",
"cant": 13,
"vehiculo": "",
"lc": "357042063498597"
},
{
"cantidad": 241,
"reply": "A3MA1",
"location": "AES NO REGISTRADO",
"str": "32%",
"date_Sent": "8/1/2017 1:38:09 PM",
"cant": 22,
"vehiculo": "",
"lc": "357042063498597"
}

如您所见,这是一个 5 项列表。我需要做的是生成 JSON,而不用逗号分隔每个项目。所以输出必须是这样的:

{
"cantidad": 241,
"reply": "6F5HH",
"location": "15 Azua - IP",
"str": "36%",
"date_Sent": "7/14/2017 9:58:31 AM",
"cant": 14,
"vehiculo": "",
"lc": "356612023737986"
}
{
"cantidad": 241,
"reply": "6F5HH",
"location": "15 Azua - IP",
"str": "36%",
"date_Sent": "7/20/2017 11:46:10 AM",
"cant": 1,
"vehiculo": "",
"lc": "356612023737986"
}
{
"cantidad": 241,
"reply": "5UG71",
"location": "AES NO REGISTRADO",
"str": "36%",
"date_Sent": "8/1/2017 1:35:29 PM",
"cant": 16,
"vehiculo": "",
"lc": "357042063498597"
}
{
"cantidad": 241,
"reply": "9LKYH",
"location": "AES NO REGISTRADO",
"str": "52%",
"date_Sent": "8/1/2017 1:38:09 PM",
"cant": 13,
"vehiculo": "",
"lc": "357042063498597"
}
{
"cantidad": 241,
"reply": "A3MA1",
"location": "AES NO REGISTRADO",
"str": "32%",
"date_Sent": "8/1/2017 1:38:09 PM",
"cant": 22,
"vehiculo": "",
"lc": "357042063498597"
}

这是我的 .NET WebApi 应用程序的注册方法:

    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Formatters.Remove(config.Formatters.XmlFormatter); //DEVOLVER SOLO JSON 
        config.Formatters.JsonFormatter.SerializerSettings.Formatting       = Formatting.Indented;                          
        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
    }

【问题讨论】:

  • 你为什么要那个无效的 json?
  • @GuaGua0308:原来的 JSON 实际上是正确的。你想把它转换成什么是不正确的。您是否尝试过将所需的 JSON 加载到 JSON 编辑器中?它的形状很糟糕!!!
  • @L.B 为什么是无效的 JSON?它是knownsupported - 由于缺少方括号,此处的第一个示例无效
  • @SirRufo 不,我说的是:一个无效的 json 一直是无效的。。只有你认为它是有效的。
  • @SirRufo 你在没有测试的情况下说的太多了(所以不允许我说出我的想法)。打开你的VS,写var jobj = JObject.Parse(jsonOPwants);并运行它。然后我们可以进一步讨论。 (我在写 cmets 之前就这样做了)。

标签: c# .net json rest asp.net-web-api


【解决方案1】:

我不确定您为什么需要破坏 JSON,但仍然。我会使用这个序列化程序(您需要参考 System.Web.Extensions):

using System.Web.Script.Serialization;
...
string jsonStr = new JavaScriptSerializer().Serialize(obj);
string notJsonStr = jsonStr.Replace("},{", "}{");
return notJsonStr;

不要忘记将预期的内容类型配置为“text\plain”而不是“application\json”,因为此结果字符串将不再是 JSON。

【讨论】:

  • 感谢您的想法。我创建了一个 HttpResponseMessage 方法并用替换返回 de Json。
猜你喜欢
  • 1970-01-01
  • 2014-10-10
  • 2018-06-13
  • 2018-10-10
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
相关资源
最近更新 更多