Json 中的键和值

Posted

技术标签:

【中文标题】Json 中的键和值【英文标题】:Key and value in Json 【发布时间】:2016-09-02 02:15:16 【问题描述】:

这就是我现在通过贝宝在网站上建立会员资格的方式。

我想在这里完成:

   "plan": 
        "id": "P-rtfhfedh",
        "state": "ACTIVE",
        "name": "T-Shirt of the Month Club Plan",
        "description": "Template creation.",
        "type": "FIXED",
        "payment_definitions": [
          
            "id": "PD-50606817NF8063316RWBZEUA",
            "name": "Regular Payments",
            "type": "REGULAR",
            "frequency": "Month",
            "amount": 
              "currency": "USD",
              "value": "100"
            
          
        ]

我在我的 MVC 站点中比现在所做的事情是这样的:

int orderid = Convert.ToInt32(HelperClass.Helper.Settings.NyTal(8));

        JsonPaypal jsonpaypal = new JsonPaypal();
        jsonpaypal.IdValue = id + orderid;
        jsonpaypal.Name = "Medlemskab";
        jsonpaypal.description = "Medlemskab - Orderid: " + orderid;
        jsonpaypal.start_date = DateTime.Now;
        jsonpaypal.Plan = new string[] 
            "id:" Convert.ToString(id + orderid),
            "State": "ACTIVE",

        ;

类到 JsonPaypal

public class JsonPaypal

    public int IdValue
    
        get; set;
    

    public string Name
    
        get; set;
    

    public string description
    
        get; set;
    

    public DateTime start_date
    
        get; set;
    

    public string payerURL
    
        get; set;
    
    public string Plan
    
        get; set;
    

    public string URL
    
        get; set;
    

    public string Obj
    
        get; set;
    

问题是当我进入我的计划并制作多个对象时,这些对象也会从贝宝制作的代码中显示出来。

问题出在Plan所说的。

enter image description here

【问题讨论】:

"id:" Convert.ToString(id + orderid) -> "id": Convert.ToString(id + orderid) 它仍然给我红色的错误并写“语法错误,''预期”。当我关心并转换时,它就会成功。 @DmitriyZapevalov 这只是乍一看。乍一看:JsonPaypal.Plan 是字符串,您正在尝试分配字符串的array。同样array 初始化值与; 分开,不能有:。我建议您创建子类 JsonPaypal.Plan 并包含所有字段并填写它。 @DmitriyZapevalov 所以你想对我创建的班级提起集体诉讼? 我建议代表整个JSON 类层次结构。所以***JsonPaypalfield 不仅仅是字符串,而是嵌套类JsonPaypal.Plan 的实例。 【参考方案1】:

您需要将public string Plan get; set; 对象设置为string[] 字符串数组。

像这样:public string[] Plan get; set;

这就是为什么你会得到这个红色的波浪,因为你的代码试图将普通的string 设置为strings 的数组。

希望这会有所帮助!

编辑另外,经过更多查看,我意识到您正在尝试将字符串错误地添加到您的字符串数组中。

添加字符串的语法如下:

string[] array = new string[]  "string 1", "string 2" ;

您在哪里创建字符串,并使用其他属性/变量来创建它们,请确保您正确地创建了字符串本身。关闭您的字符串并添加 + 以附加来自方法或属性的字符串。同样,要从方法或属性添加到字符串,请添加 + " extra string stuff"

这样

string[] array = new string[] 
                      "id: " + YourClass.Id,
                      "another string: " + myLocalVariable,  
                      "yet another " + AClass.Property + " class" ;

您的代码应该设置jsonpaypal.Plan...

jsonpaypal.Plan = new string[] 
                       "id: " + Convert.ToString(id + orderid),
                       "State: ACTIVE" ;

希望这会有所帮助!

【讨论】:

我刚刚重新查看了您的代码并在上面编辑了我的答案。这会有所帮助,相信我。之前它也失败了,因为你有错误的字符串来组成你的string[]。看一看;我已经包含了一些示例。 您的代码 "id:" Convert.ToString(id + orderid), "State": "ACTIVE", 错误。必须这样写: "id: " + Convert.ToString(id + orderid), "State: ACTIVE" ; 才能正常工作。我已将此代码添加到我的答案中。 很高兴能帮到你xD 最后一页的小问题,就像示例中一样。来自贝宝,我如何看待计划中的“payment_definitions”? 创建一个映射到 Json 对象中相同属性的 PaymentDefinitions 类(就像您对“JsonPaypal”对象所做的那样)。然后,在您的JsonPaypal 对象中,添加一个名为PaymentDefinitions 类型为List<PaymentDefinitions> 的新属性。无论您从哪里转换(我使用Newtonsoft.JsonConvertToObject 方法),都会直接按照您想要的方式进行转换。

以上是关于Json 中的键和值的主要内容,如果未能解决你的问题,请参考以下文章

将json对象值变成javascript中的键和值[关闭]

如何在iOS swift的tableview中使用json响应中的键和值?

在spring boot中仅获取值而不是JSON响应中的键和值

如何通过 jq 中这些键的键和值对 json 文件进行排序

如何交换散列中的键和值

如何在javascript中获取json键和值?