1

JavaScript 数组示例:

var array_1 = [["string 1", 2013, "string 2"], "string 3", ["string 4", , "string 5"]];
/* array_1[0][2] = "string 2" */

var array_2 = [1, , ["string 1", "string 2"]];
/* array_2[0][0] = 1 */

我需要将 JS 数组解析为c# jagged array ,或者any other object可以通过索引轻松访问每个子字符串,通过函数,使用:

  • 数字变成字符串 ( 1=> "1")
  • null变成""(长度为 0 的字符串)。

你能帮我怎么做吗?非常感谢你!

4

5 回答 5

4

使用Json.NET

// using
using Newtonsoft.Json.Linq;


string JSarray_1 = @"[[""string 1"", 2013, ""string 2""], ""string 3"", [""string 4"", , ""string 5""]]";
JObject j = JObject.Parse("{\"j\":" + JSarray_1 + "}");
MessageBox.Show((string)j["j"][0][2]); // "string 2"
于 2013-04-16T04:01:18.833 回答
2

请参阅 C# 语言文档:“多维数组 (C#)”

string[,] items = new  string[,] {{"string 1","string 2"},...};
于 2013-04-10T05:53:53.513 回答
1

我认为 TuyenTk 正在寻找,而 emigue 试图描述的是使用一个库来执行“魔术”(=解析)

我会推荐JSON.Net,因为它是我一直使用的那个 - 但我想那里有很多这样的。

链接页面还包括一​​些关于如何使用它的简单示例。

关于用空字符串替换 null:

var myValue = origValue ?? String.Empty;

如果 origValue 为 null,myValue 将设置为“”,否则表达式将计算为 origValue;

有关“??”或所谓的“空合并运算符”的更多信息,请参阅文档

于 2013-04-15T11:29:14.957 回答
0

作为锯齿状阵列

string[][] items = new string[3][];

items [0] = new string[2];
items [1] = new string[1];
items [2] = new string[2];

items[0][0] = "string1";
items[0][1] = "string3";
items[1][0] = "string4";
items[2][0] = "string5";
items[2][1] = "string6";

或者

string[][] items = new string[][] 
{
    new string[] {"string1", "string3"},
    new string[] {"string4"},
    new string[] {"string5", "string6"}
};
于 2013-04-10T06:05:24.143 回答
0

如果您需要将 javascript 数组解析为 c# 数组,您可以将 Javascript 数组序列化为 JSON,然后将 JSON 反序列化为 C# 数组。

以前,您需要做一个转换:将 Javascript 数组表示中的 "" 替换为 null 作为字符串。

然后,你可以做这样的事情:

var JSArrayString = @"{"array_1": [["string 1", 2013, "string 2"], "string 3", ["string 4", null, "string 5"]]}";
var CSharpDict = SomeJSONLibrary.Deserialize(JSString);
var CSharpArray = CSharpDict["array_1"];
var myItem = CSharpArray[0][2];
于 2013-04-15T06:54:55.800 回答