C# 在C中创建JSON数组#
好的,所以我尝试通过http连接发送POST命令,并使用JSON格式来实现。我正在用C#编写程序来实现这一点,我想知道如何格式化一个值数组,将其作为JSON传递给服务器 目前我有:C# 在C中创建JSON数组#,c#,json,C#,Json,好的,所以我尝试通过http连接发送POST命令,并使用JSON格式来实现。我正在用C#编写程序来实现这一点,我想知道如何格式化一个值数组,将其作为JSON传递给服务器 目前我有: new{name=“command”,index=“X”,optional=“0”} 这在JSON中转换为: "name": "command", "index": "X", "optional": "0" "items": [ { "name": "command", "
new{name=“command”,index=“X”,optional=“0”}
这在JSON中转换为:
"name": "command",
"index": "X",
"optional": "0"
"items":
[
{
"name": "command",
"index": "X",
"optional": "0"
},
{
"name": "status",
"index": "X",
"optional": "0"
}
]
我想创建一个数组,叫做items,其中每个元素都包含这三个值。因此,它本质上是一个对象数组,其中对象包含名称、索引和可选字段
我的猜测是这样的:
new {items = [(name = "command" , index = "X", optional = "0"),
(name = "status" , index = "X", optional = "0")]}
如果语法正确,将在JSON中转换为:
"name": "command",
"index": "X",
"optional": "0"
"items":
[
{
"name": "command",
"index": "X",
"optional": "0"
},
{
"name": "status",
"index": "X",
"optional": "0"
}
]
但是,显然我做错了。思想?非常感谢您的帮助。您就快到了。这应该可以做到:
new {items = new [] {
new {name = "command" , index = "X", optional = "0"},
new {name = "command" , index = "X", optional = "0"}
}}
如果源是某种类型的可枚举项,则可能需要执行以下操作:
new {items = source.Select(item => new
{
name = item.Name, index = item.Index, options = item.Optional
})};
最好为每个项目创建一些类,而不是使用匿名对象。在序列化的对象中,应该有这些项的数组。例如:
public class Item
{
public string name { get; set; }
public string index { get; set; }
public string optional { get; set; }
}
public class RootObject
{
public List<Item> items { get; set; }
}
公共类项目
{
公共字符串名称{get;set;}
公共字符串索引{get;set;}
公共字符串可选{get;set;}
}
公共类根对象
{
公共列表项{get;set;}
}
用法:
var objectToSerialize = new RootObject();
objectToSerialize.items = new List<Item>
{
new Item { name = "test1", index = "index1" },
new Item { name = "test2", index = "index2" }
};
var objectToSerialize=new RootObject();
objectToSerialize.items=新列表
{
新项{name=“test1”,index=“index1”},
新项{name=“test2”,index=“index2”}
};
这样,如果需要更改数据结构,就不必多次更改
p、 这是一个非常好的工具,用于复杂的
json
s以及匿名类型(我更喜欢而不是),这只是另一种方法
void Main()
{
var x = new
{
items = new[]
{
new
{
name = "command", index = "X", optional = "0"
},
new
{
name = "command", index = "X", optional = "0"
}
}
};
JavaScriptSerializer js = new JavaScriptSerializer(); //system.web.extension assembly....
Console.WriteLine(js.Serialize(x));
}
结果:
{“items”:[{“name”:“command”,“index”:“X”,“optional”:“0”},{“name”:“command”,“index”:“X”,“optional”:“0”}]}
C#没有JSON文本。你需要使用匿名类型。这就是我要做的。因此,新的
如果你想提供JSON系列化,看看:。如果你有ASP.NET和Web Tools 2012,你也有这个很棒的功能:)你能解释一下这是如何回答这个问题的吗?@Dave如果你需要动态地这样做呢。就像在for循环中一样?如果你在for循环中,那么你必须创建一个真实的模型,而不是使用匿名类型。如果您可以使用LINQ(如果您使用LINQ,我更愿意这样做),那么您可以简单地将结果“投影”到一个匿名模型中,如我的示例所示。我更新了我的答案,添加了一个示例,说明您可以使用可枚举源执行哪些操作。