如何生成字典<> c#中的对象

时间:2014-04-28 13:34:12

标签: c# json dictionary

我想创建一个Dictionary<>对象和那个字典对象应该包含 名称和值属性。例如:

Dictionary<string,object> dict = new Dictionary<string,object>();

当我将该字典序列化为json字符串时,它应该像这样访问:

dict[0]["name"]=="ProductName"; //property name
dict[0]["value"]=="product1";   // value

dict[1]["name"]=="Description"; //property name
dict[2]["value"]=="product1 desc";   // value

............................

但我没有为它做好准备。任何人都可以建议我怎么做?

修改: -

实际上我从Ajax帖子中得到了json字符串,如下所示: -

var str ="{"name":"firstName","value":"john"}",

一旦我得到它,我将以下面的格式反序列化该字符串: -

var dictDynamic = sear.Deserialize<dynamic>(str);

结果我得到了这样的属性:

dictDynamic[0]["name"]

和这样的财产价值: -

dictDynamic[0]["value"]

但问题是现在我想在服务器端执行此操作。想要以上面的json字符串格式生成模型字符串,之后想要以上述方式反序列化。

3 个答案:

答案 0 :(得分:1)

字典不允许您使用具有相同值的两个键。因此0作为密钥不起作用。

可能最好的办法是创建一个对象来保存您的信息。

public class Product
{
    public string ID {get;set;}
    public string Name {get;set;}
    public string Value {get;set;}
}

然后创建一些对象。

Product product=new Product();
product.ID="0";
product.Name="My Super Widget";
product.Value="500";
//Then add that product to the dictionary.
Dictionary<string, Product> products=new Dictionary<string, Product>();
products.Add(product.ID, product);
//then you can access it in this way
products["0"].Name; //the value of this is "My Super Widget"

想要将其序列化为JSON吗?让我们使用JSON.Net

string json=JsonConvert.SerializeObject(products);

答案 1 :(得分:0)

您可以使用JSON.NET

string json = JsonConvert.SerializeObject(dict);

但是你需要有一个有效的字典和可序列化的值。例如:

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Sizes = new string[] { "Small" };
dict["0"] = product;

答案 2 :(得分:0)

var myDict = new Dictionary<string, Dictionary<string, string>>();

var innerDict = new Dictionary<string, string>();
innerDict.Add("name", "name 0");
innerDict.Add("value", "value 0");

myDict.Add("0", innerDict);

innerDict = new Dictionary<string, string>();
innerDict.Add("name", "name 1");
innerDict.Add("value", "value 1");

myDict.Add("1", innerDict);

var foo = myDict["0"]["name"]; // returns "name 0"

string json = Newtonsoft.Json.JsonConvert.SerializeObject(myDict);