过去,我使用过JSON数据--主要是“捏造”我的解决方案,而不是真正理解为什么或如何工作。我遇到了一个问题,返回的数据看起来与我以前看到的有些不同,而且我找不到任何与它相匹配的例子。
下面是返回数据的示例(通过API);
{"domain.co.uk":{"status":"available","classkey":"thirdleveldotuk"},"domain.net":{"status":"available","classkey":"dotnet"},"domain.com":{"status":"available","classkey":"domcno"}}在我的前端,我需要归还这样的东西-
因为'domain.com‘etc值总是会改变,所以我无法像通常那样映射名称(尽管总是返回3’行‘)。
我已经检查了我拥有的每一本CF书,并阅读了在线CF文档,但我完全不知道从哪里开始这个!
指针非常感谢!
发布于 2013-04-05 17:50:46
如果您使用deserializeJSON(数据)运行此操作,您将看到您最终得到的是带有嵌套结构的结构。因此,您可以循环遍历您的结构,获取键,然后获取该键的状态。在JSON术语中,您的JSON对象有嵌套对象。
<cfset data = deserializeJSON(apiData) />
<cfset formattedData = [] />
<cfset tmp = {} />
<cfloop collection=#data# item="domain">
<cfset tmp.domain = domain />
<cfset tmp.status = data[domain]["status"] />
<cfset arrayAppend(formattedData,duplicate(tmp)) />
</cfloop>
<cfdump var=#formattedData# />发布于 2013-04-05 18:31:09
(这确实是一个更多的评论,但有点长.)
过去,我使用过JSON数据--主要是“捏造”我的解决方案,而不是真正理解为什么或如何工作。
JSON字符串本质上只是两个对象的表示:
[]和{}表示的结构(或对象)查看API字符串,大括号{}表示您正在处理一个结构:
{ "theKey": "theValue" }在您的例子中,域名是结构key。
{ "domain.co.uk": "theValue" }。。value是一个嵌套结构,包含两个静态键:"status“和"classkey”。
{ "theKey": {"status":"available","classkey":"thirdleveldotuk"} }与任何结构一样,您可以使用for .. in循环动态地迭代密钥,如果您喜欢cfml,则使用集合循环。
for (theKey in theStruct) {
WriteDump( theKey ); // ie "domain.co.uk"
}然后在循环中使用关联数组符号来获取value,即:
theStatus = theStruct[ theKey ]["status"]; // "available"
// ... OR
theValue = theStruct[ theKey ];
theStatus = theValue.status;这就是它的全部。您可以使用类似的逻辑来访问任何类型的嵌套结构。
https://stackoverflow.com/questions/15840003
复制相似问题