ColdFusion使用非标准字符解析JSON

时间:2019-06-28 17:36:36

标签: json coldfusion

我能够调用返回JSON响应的API。 我将JSON转换为CF变量,但是由于Response包含非标准字符,因此我无法访问该结构以获取要绑定的详细信息。

JSON RESPONSE

我需要从此结构中获取职位发布值。 不确定访问该数据的最佳方法。

谢谢 马特

2 个答案:

答案 0 :(得分:1)

您可以使用structKeyList获取键列表,也可以循环搜索结果集合并根据需要创建新变量:

<cfset foo = {
    errors = {},
    results = {
        "urn:li:simpleJobPostingTask:some-long-uuid" = {
            id = "urn:li:simpleJobPostingTask:some-long-uuid",
            jobPosting = "urn:li:jobPosting:12345",
            status = "SUCCEEDED"
        }
    },
    statuses = {}
}>

<cfloop collection="#foo.results#" item="key">
    <!--- Do your thing per key --->
</cfloop>

答案 1 :(得分:1)

您将需要使用Coldfusion中的structKey函数直接访问struct键。顺便说一句,响应结构键名称与响应ID相同。

<!--- first we need a test struct to work with --->
<cfscript>
// init some variables
testStruct=structNew();
resultStruct=structNew();
tempStruct=structnew();

// create our struct keys and set a value
tempStruct['id']='ur:li:simpleJobPostingTask:d230xyz';
tempStruct['jobPosting']='urn:li:JobPosting:1234abc';
tempStruct['status']='SUCCESS';

// build our final fake struct
resultStruct=tempStruct;
testStruct['results']['ur:li:simpleJobPostingTask:d230xyz']=resultStruct;
</cfscript>

Our Test Case

我们最终的解决方案如下:

<!--- Here is the code you are looking for --->
<cfset firstkey=structKeyArray(testStruct.results)[1] />

<!--- dump the results --->
<cfdump var="#testStruct.results[firstkey]#" />

最终,您的代码应如下所示:

<cfdump var="#testStruct.results[structKeyArray(testStruct.results)[1]]#">

enter image description here