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
类层次结构。所以***JsonPaypal
的field
不仅仅是字符串,而是嵌套类JsonPaypal.Plan 的实例。
【参考方案1】:
您需要将public string Plan get; set;
对象设置为string[]
字符串数组。
像这样:public string[] Plan get; set;
这就是为什么你会得到这个红色的波浪,因为你的代码试图将普通的string
设置为string
s 的数组。
希望这会有所帮助!
编辑另外,经过更多查看,我意识到您正在尝试将字符串错误地添加到您的字符串数组中。
添加字符串的语法如下:
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.Json
的ConvertToObject
方法),都会直接按照您想要的方式进行转换。以上是关于Json 中的键和值的主要内容,如果未能解决你的问题,请参考以下文章
如何在iOS swift的tableview中使用json响应中的键和值?