【问题标题】:c# return json result as an arrayc# 将json结果作为数组返回
【发布时间】:2017-03-09 21:17:49
【问题描述】:

我正在制作一个 WebApi 应用程序,并试图让我的控制器返回一个数组内的 Json 对象结果。

我希望我的回复格式如下:

[
  {
    "stampCode": "666",
    "email": "666_doctor@gmail.com",
    "phone": "+370 640 000000",
    "healthCareProvider": "Jonavos poliklinika"
  }
]

但我当前状态的代码正在返回以下内容:

{
  "stampCode": "666",
  "email": "666_doctor@gmail.com",
  "phone": "+370 640 000000",
  "healthCareProvider": "Jonavos poliklinika"
}

当我自己尝试包含一个数组时,我的输出丢失了 JSON 对象,因此看起来像这样:

[
  "stampCode: 666",
  "email: 666_doctor@gmail.com",
  "phone: +370 640 000000",
  "healthCareProvider: Jonavos poliklinika"
]

如何修复我的代码以获得所需的输出?我是编程新手,并且一直坚持这一点。

这是我的代码:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Security.Claims;
using System.Web.Http;
using System.Web.Http.Results;

namespace DoctorWebService.Controllers
{
    public class DataController : ApiController
    {
        [Authorize]
        [HttpGet]
        [Route("api/doctors")]
        public JsonResult<object> Get(string doctorCode)
        {
            if (doctorCode == "666")
            {
                var identity = (ClaimsIdentity)User.Identity;
                return Json<object>(new 
                {
                    stampCode = "666",
                    email = "666_doctor@gmail.com",
                    phone = "+370 640 000000",
                    healthCareProvider = "Jonavos poliklinika"
                });
            }
            else
            {
                return Json<object>(new
                {
                    notFound = 0
                });
            }
        }
    }
}

【问题讨论】:

    标签: c# asp.net arrays json visual-studio


    【解决方案1】:

    是的,你只是在创建一个新的匿名类型。不过,将其包装在数组中很容易:

    return Json(new[] { new
    {
        stampCode = "666",
        email = "666_doctor@gmail.com",
        phone = "+370 640 000000",
        healthCareProvider = "Jonavos poliklinika"
    }});
    

    目前还不清楚为什么当您试图寻找一位医生时,您想要返回一个数组。如果我是 API 消费者,我会觉得这很令人困惑……

    【讨论】:

    • Zapier(例如)需要一个数组
    【解决方案2】:

    您正在创建 JSON Object 而不是 JSON Array,因此您得到的结果是正确的。
    如果你想返回一个 JSON 数组,你需要返回如下内容:

    new[]{
      //obj1, obj2,obj3
    }
    

    结果将是您的对象的JSON Array

    【讨论】:

      猜你喜欢
      • 2022-10-05
      • 2017-02-17
      • 2014-07-23
      • 2018-11-13
      • 1970-01-01
      • 2015-08-26
      • 2019-01-27
      • 1970-01-01
      相关资源
      最近更新 更多