-2

我有一个包含一些项目的类。我想使用 DataContractJsonSerializer 将此类的一个实例序列化为 json:

[DataContract]
public class Policy
{
    private string expiration { get; set; }
    private List<List<string>> conditions { get; set; }
    public Policy(){}
    public Policy(string expiration, List<List<string>> conditions){
        this.expiration = expiration;
        this.conditions = conditions;
    }
    [DataMember]
    public string DateExpiration
    {
        get{ return expiration;}
        set{expiration = value;}
    }
    [DataMember]
    public List<List<string>> Conditions
    {
        get{return conditions;}
        set{conditions = value;}
    }
}

当序列化为 json 时,它应该是这样的:

{
    "expiration": "2011-04-20T11:54:21.032Z",
    "conditions": [
    ["eq", "acl", "private"],
    ["eq", "bucket": "myas3bucket"],
    ["eq", "$key", "myfilename.jpg"],
    ["content-length-range", 0, 20971520],
    ["eq", "$redirect", "myredirecturl"],
  ]
}

我试过这样但没有:

        string expiration = "2012-12-01T12:00:00.000Z";            
        List<List<string>> conditions = new List<List<string>>()
        {
            new List<string>(){ "[ eq", "acl", "private ]" }, 
            new List<string>(){ "[ eq", "bucket", "myas3bucket]" },
            new List<string>(){ "[ eq", "$key", "myfilename.jpg ]" },
            new List<string>(){ "[ content-length-range", "0", "20971520]" },
            new List<string>(){ "[ eq", "$redirect", "myredirecturl]" }
        };

        Policy myPolicy = new Policy(expiration,conditions);
        string policy = JSONHelper.Serialize<Policy>(myPolicy);

谢谢

4

1 回答 1

0

首先...你的班级需要一点帮助:

[DataContract] 
public class Policy 
{ 
    public Policy(){} 
    public Policy(string expiration, List<List<string>> conditions){ 
        this.DateExpiration = expiration; 
        this.Conditions = conditions; 
    } 
    [DataMember] 
    public string DateExpiration { get; set; } 

    [DataMember] 
    public List<List<string>> Conditions { get; set; }

}

尝试删除列表中的括号:

    string expiration = "2012-12-01T12:00:00.000Z";             
    List<List<string>> conditions = new List<List<string>>() 
    { 
        new List<string>(){ "eq", "acl", "private" },  
        new List<string>(){ "eq", "bucket", "myas3bucket" }, 
        new List<string>(){ "eq", "$key", "myfilename.jpg" }, 
        new List<string>(){ "content-length-range", "0", "20971520" }, 
        new List<string>(){ "eq", "$redirect", "myredirecturl" } 
    }; 

    Policy myPolicy = new Policy(expiration,conditions); 
    string policy = JSONHelper.Serialize<Policy>(myPolicy);
于 2012-07-08T19:02:05.233 回答