【问题标题】:convert json string to string array将json字符串转换为字符串数组
【发布时间】:2019-08-15 12:47:49
【问题描述】:

我正在尝试将 json 字符串转换为字符串数组

我的 json 字符串:"[\"false\",\"true\"]"

var js = new System.Web.Script.Serialization.JavaScriptSerializer();
string[] strArray = new string[2];
strArray = js.Deserialize("[\"false\",\"true\"]", string[2]).ToArray();

但它只允许我做一个 charArray。

我只需要能够将我的结果称为strArray[0],以便它返回"false"

【问题讨论】:

  • js是什么类型?
  • 已编辑问题

标签: c# arrays json string serialization


【解决方案1】:

尝试做:

strArray = js.Deserialize<string[]>("[\"false\",\"true\"]");

【讨论】:

  • 伙计,我假设我没有测试的唯一选项.. 谢谢,一旦我被允许,我会接受作为答案
【解决方案2】:

您的示例代码无法编译。第二个参数应该是Type 对象,string[2] 不是。应该是这样的:

strArray = js.Deserialize("[\"false\",\"true\"]", typeof(string[]));

或者,正如提到的另一个答案,您可以使用the other, generic overload 作为方法:

strArray = js.Deserialize<string[]>("[\"false\",\"true\"]");

任何一个都会做同样的事情。如果您事先不知道实际类型是什么,有时能够传递Type 对象会很方便。在这种情况下你会这样做,所以没关系。

【讨论】:

  • js.Deserialize(..., typeof(T))jsDeserialize&lt;T&gt;(...) 的行为是一样的,不是吗?
  • @Lukas 是的,他们有。
  • 抱歉,对It's just handy to be able to pass a Type object sometimes if you don't know beforehand what the actual type will be有点困惑
  • 你会知道什么时候需要它 :) 很难解释一个真实的用例......但是你可以,例如,在事先不知道 someObject 是什么类型的情况下做类似 js.Deserialize(..., someObject.GetType()) 的事情(你只知道 JSON 是同一类型)。 Deserialize&lt;T&gt;() 无法做到这一点。
  • 啊,我明白你在说什么。 :-)
【解决方案3】:

为什么不使用 Newtonsoft 的 JArray 类型?它是为这种转换而构建的,可以自动处理许多边缘情况。

var jArray = JArray.Parse("[\"false\",\"true\"]");
var strArray = jArray.ToObject<string[]>()

这会给你一个字符串数组。但您也可以选择使用.ToArray() 转换为有时更有用的 JToken 数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多