【问题标题】:How to return data in json format its returns string如何以 json 格式返回数据及其返回字符串
【发布时间】:2016-05-25 10:32:42
【问题描述】:

我有以下代码,但它以字符串类型返回数据..如何以 json 格式返回数据。

[HttpGet]
        public string Save(BookingInformation BookingJson)
        {
    SuccessResponse msg = new SuccessResponse();
    msg.FleetBookingId = objMaster.Current.Id.ToString();
    msg.Success = true;
    msg.Message = "Booking saved successfully";
    var obj = serializer.Serialize(msg).Trim('"');
    return obj;
}

调用方法

public async void getsave(BookingInformation BookingJson)
{
    var baseAddress = new Uri("http://mycar.com");

    string url = "/api/Jobs/SaveBooking";

    using (var httpClient = new HttpClient { BaseAddress = baseAddress })
    {
        var Jsonlines = JsonConvert.SerializeObject(BookingJson);
        //httpClient.DefaultRequestHeaders.TryAddWithoutValidation("accept-charset", "utf-8");

        //httpClient.DefaultRequestHeaders.TryAddWithoutValidation("authorization", "Basic *sample_token*");

        using (var content = new StringContent(Jsonlines, System.Text.Encoding.Default, "application/json"))
        {
            using (var response = await httpClient.PostAsync(url, content))
            {
                object responseData = await response.Content.ReadAsStringAsync();
            }
        }
    } 
}

结果是:如何只返回 json。我要返回json格式的数据

"{\"FleetBookingId\":\"36572\",\"Success\":true,\"Message\":\"Booking saved successfully\"}"

我想要这样:

{"FleetBookingId":"36572","Success":true,"Message":"Booking saved successfully"}

【问题讨论】:

  • 那么不要从您的 API 方法中返回 string,而是返回 SuccessResponse,并让 API 的序列化程序自动完成其工作。
  • 如何以 json 格式返回数据,因为我正在使用多种语言的这项服务.. python android 和 php..
  • 我之前评论的哪一部分你不明白?
  • 它的返回字符串格式我想要json格式..简单

标签: c# json winforms json.net


【解决方案1】:

不要从您的 API 方法返回一个字符串,而是一个 SuccessResponse 并让 API 的序列化程序完成它的工作:

[HttpGet]
public SuccessResponse Save(BookingInformation BookingJson)
{
    SuccessResponse msg = new SuccessResponse();
    msg.FleetBookingId = objMaster.Current.Id.ToString();
    msg.Success = true;
    msg.Message = "Booking saved successfully";

    return msg;
}

【讨论】:

  • @CodeCaster 感谢您对答案的改进 :-) 现在更好了。
【解决方案2】:

从控制器返回一个 Json 结果

    public ActionResult GetSuggestionFirst()
    {
        var search = Request.Params["term"].Trim();

        var itemList = (from items in db.TblProductSuggestionFirsts where items.Name.StartsWith(search) select new { label = items.Name, value = items.Name }).Take(50).ToList();

        return Json(itemList, JsonRequestBehavior.AllowGet);
    }

这个返回 json 对象(Json 看起来像字符串,用 Javascript 解析就行了)

【讨论】:

    【解决方案3】:

    我得到了答案谢谢:)

    var content = new JavaScriptSerializer().Serialize(msg);
    
    JToken json = JObject.Parse(content);
    

    【讨论】:

    • 在控制器方法中进行 JSON 往返是没有意义的。你有msg 就在那里。你打算用JToken json做什么?
    • @CodeCoster 最终 OP 做了同样的事情
    • 感谢 @CodeCaster 您的支持,但我真的希望 json 数据对我来说可以正常工作
    • @sumngh 不,这是在控制器中,而不是在客户端。
    猜你喜欢
    • 2020-03-30
    • 2011-06-11
    • 2020-07-30
    • 1970-01-01
    • 2017-02-24
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    相关资源
    最近更新 更多