c#将json结果作为数组返回

时间:2016-10-27 08:59:24

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

我正在创建一个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
                });
            }
        }
    }
}

2 个答案:

答案 0 :(得分:4)

是的,你只是在创建一个新的匿名类型。尽管如此,将它包装在一个数组中很容易:

import resource


def report():
    maxrss = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
    peak, current = get_proc_status(('VmHWM', 'VmRSS'))
    print(current, peak, maxrss)


report()

s = ' ' * 2 ** 28  # 256MiB
report()

s = None
report()

当你想找一个医生时,你不想清楚为什么你想要返回一个阵列。如果我是API消费者,我认为这很令人困惑,我认为......

答案 1 :(得分:0)

您正在创建JSON Object而不是JSON Array,因此您获得的结果是正确的。
如果你想要返回一个JSON数组,你需要返回这样的东西:

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

结果将是JSON Array你的对象