将c#字符串[]转换为json

r3plica

我有一个方法可以将string []返回到控制器动作,并且该动作返回JsonAction,如下所示:

// GET: Locations/Get
[HttpGet]
public async Task<JsonResult> Get(string lotNumber)
{
    var result = await this.MakeApiCall("/locations?lotNumber=" + lotNumber);

    return Json(result, JsonRequestBehavior.AllowGet);
}

在我的Javascript中,如果执行此操作:

core.get(locationsApi + "?lotNumber=" + core.getParameterByName("lotNumber"), function (response) {
    var r = JSON.parse(response);

    console.log(r);
});

我看到一个看起来像这样的字符串:

[“ BA01A1”,“ BA01A2”,“ BA01A3”]

但是,这似乎是一个字符串,因为如果执行此操作:

core.get(locationsApi + "?lotNumber=" + core.getParameterByName("lotNumber"), function (response) {
    var r = JSON.parse(response);
    var r = JSON.parse(r);

    console.log(r);
});

它实际上返回一个数组。...我如何才能在开始时返回该数组,或者至少返回只需要解析一次的东西?

亚伦

听起来像var result =from返回类型MakeApiCall是,string但是包含["BA01A1","BA01A2","BA01A3"]本质上是序列化的JSON。

您可以通过鼠标悬停var并查看类型是什么,并使用调试器查看从API调用返回的实际值来确定这一点

然后,当您返回带有Json(result, JsonRequestBehavior.AllowGet);字符串的序列化JSON时,它将被序列化为另一个JSON表示形式。

本质上,它已经被双重序列化了。

使用此功能时,客户端的result.length == 3,即数组的预期长度。

    public ActionResult GetAnswer(string question)
    {               
        var answer = @"[""BA01A1"",""BA01A2"",""BA01A3""]";
        return Content(answer, "text/javascript");
    }
    // javascript result.length returns 3

相反,当您使用Json帮助器时,您将得到一个包含28个字符的字符串,因为Json帮助器假定您传递的对象应该进行序列化,但是问题是,您已经有一个数组,该数组表示为序列化的字符串:

    public ActionResult GetAnswer(string question)
    {                   
        var answer = @"[""BA01A1"",""BA01A2"",""BA01A3""]";
        return Json(answer);            
    }
    // javascript result.length returns 28

这个小提琴证明了这一点。

https://dotnetfiddle.net/NCAPkh

TLDR在您的情况下var result,可能已经是JSON序列化对象的字符串表示形式,并将其传递给Json(帮助程序,然后再次对其进行序列化。因此,客户端必须反序列化两次。

您有两个选择,要么将API调用中的字符串反序列化为C#对象列表,然后将该对象列表传递给return Json(someObject...JSON 要么将其作为Content类型返回为JSON(上面已演示)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将JSON字符串转换为C#字典

来自分类Dev

将字符串转换为double或float C#

来自分类Dev

C#将类转换为查询字符串

来自分类Dev

C#将字符串转换为整数

来自分类Dev

将Json字符串转换为C#对象列表

来自分类Dev

C#将字符串转换为字典

来自分类Dev

如何使用C#将分层键值对从字符串转换为json?

来自分类Dev

C#:将字符列表转换为字符串

来自分类Dev

将字符串转换为列表-C#

来自分类Dev

C#将Double从DataGridView转换为字符串

来自分类Dev

将字符串转换为数组| C#

来自分类Dev

将字符串转换为C#

来自分类Dev

将JSON字符串转换为C#字典

来自分类Dev

将字符串转换为css c#

来自分类Dev

试图将字符串转换为双C#?

来自分类Dev

将字符串转换为JSON对象C#

来自分类Dev

将位字符串转换为byte [] c#

来自分类Dev

将字符串转换为JSON C#

来自分类Dev

将字符串转换为(对象)routeValues C#

来自分类Dev

将字符串转换为活动名称C#

来自分类Dev

在C#中将字符串转换为Json

来自分类Dev

C#将字符串值转换为字节

来自分类Dev

C#将字符串转换为JSON错误

来自分类Dev

WebDriver C# - 将 WebElement 转换为字符串

来自分类Dev

C#将字符串转换为int

来自分类Dev

C# 将字符串转换为 int 出错

来自分类Dev

将字符串转换为 int C#

来自分类Dev

C# 无法将类型转换为字符串

来自分类Dev

c# 将 json 字符串转换为 .csv