Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用url编码的JSON负载进行POST转换_Javascript_Json_Api_Apigee - Fatal编程技术网

Javascript 使用url编码的JSON负载进行POST转换

Javascript 使用url编码的JSON负载进行POST转换,javascript,json,api,apigee,Javascript,Json,Api,Apigee,好吧,我不会马上把这件事搞定的,所以我们看看我是否忽略了显而易见的事情 根据要求 curl "https://api.me.com/v1/visitors" --data "visitor=%7B%0A++%22funnels%22%3A+%7B%7D%2C%0A++%22_partition%22%3A+96%2C%0A++%22metric_sets%22%3A+%7B%0A++++%2234%22%3A+%7B%0A++++++%22safari%22%3A+1%0A++++%7D%0A

好吧,我不会马上把这件事搞定的,所以我们看看我是否忽略了显而易见的事情

根据要求

curl "https://api.me.com/v1/visitors" --data  "visitor=%7B%0A++%22funnels%22%3A+%7B%7D%2C%0A++%22_partition%22%3A+96%2C%0A++%22metric_sets%22%3A+%7B%0A++++%2234%22%3A+%7B%0A++++++%22safari%22%3A+1%0A++++%7D%0A++%7D%2C%0A++%22flags%22%3A+%7B%0A++++%22Book+Pack+Purchaser%22%3A+false%2C%0A++++%22Boat+PP+Viewer%22%3A+true%2C%0A++++%22Boat+Purchaser%22%3A+false%2C%0A++++%22Mobile+Shopper%22%3A+true%2C%0A++++%22Visitor+Buy%22%3A+false%2C%0A++++%22Testing%22%3A+true%2C%0A++++%22Book+Pack+PP+Viewer%22%3A+false%2C%0A++++%22Women%27s+Dept+Visitors%22%3A+true%2C%0A++++%22Boat+Abandoner%22%3A+false%0A++%7D%2C%0A++%22replaces%22%3A+%5B%5D%2C%0A++%22shard_token%22%3A+21000096%0A%7D"
您会注意到传递的--data是一个已经编码的JSON对象

 {"not":"my design"}
你可以在这里对它进行编码:基本上它变成:

{
 "funnels": {},
"_partition": 96,
"metric_sets": {
  "34": {
    "safari": 1
  }
},
"flags": {
  "Book Purchaser": false,
  "Boat PP Viewer": true,
  "Boat Purchaser": false,
  "Mobile Shopper": true,
  "Visitor Buy": false,
   "Testing": true,
  "Book Pack PP Viewer": false,
  "Women's Dept Visitors": true,
  "Boat Abandoner": false
 },
"replaces": [],
"shard_token": 21000096
}
我不知道如何将值放入脚本中的JSON对象中,以便开始混搭数据。我有一个

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="Script-ProcessRequestVars">
    <DisplayName>Script-ProcessRequestVars</DisplayName>
        <FaultRules/>
       <Properties/>
    <ResourceURL>jsc://Script-ProcessRequestVars.js</ResourceURL>
</Javascript>
但我得到的只是

 {
   "fault": {
   "faultstring": "Execution of Script-ProcessRequestVars failed on line 4 with error: 1",
   "detail": {
     "errorcode": "steps.javascript.ScriptExecutionFailedLineNumber"
      }
   }
 }
我缺少什么???

克里斯,尝试替换:

context.setVariable("my.visitor", context.proxyRequest.body.asForm['visitor'][0]);


context.proxyRequest.body似乎有问题。如果通过上述解决方法解决了此问题,请打开一个记录单,同时使用此解决方法。

我不确定为什么要将JSON作为表单参数传递。。。就我个人而言,我会将正文作为Content Type:application/json发送,并在ExtractVariables策略中使用json路径为要操作的json设置Apigee变量:

POST
Content-type: application/json

{
 "funnels": {},
"_partition": 96,
"metric_sets": {
  "34": {
    "safari": 1
  }
},
"flags": {
  "Book Purchaser": false,
  "Boat PP Viewer": true,
  "Boat Purchaser": false,
  "Mobile Shopper": true,
  "Visitor Buy": false,
   "Testing": true,
  "Book Pack PP Viewer": false,
  "Women's Dept Visitors": true,
  "Boat Abandoner": false
 },
"replaces": [],
"shard_token": 21000096
}
提取变量示例:

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables 1</DisplayName>
    <FaultRules/>
    <JSONPayload>
        <Variable name="name">
            <JSONPath>$.flags.Book%20Purchaser</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>

提取变量1
$.flags.Book%20Purchaser
要求
阿皮吉
顺便说一句——您可能还希望避免在JSON标签中添加空格——这不是真正的标准,可能会导致解析问题


ExtractVariables

在我看来,将JSON作为表单参数传递也是一种糟糕的设计:{“不是”:“我的设计”}一些供应商认为这是一个好主意。此外,JSON标签中的空格也是一种很糟糕的做法。你敢打赌,我会在我的新门面上改变所有这些肮脏的东西。
POST
Content-type: application/json

{
 "funnels": {},
"_partition": 96,
"metric_sets": {
  "34": {
    "safari": 1
  }
},
"flags": {
  "Book Purchaser": false,
  "Boat PP Viewer": true,
  "Boat Purchaser": false,
  "Mobile Shopper": true,
  "Visitor Buy": false,
   "Testing": true,
  "Book Pack PP Viewer": false,
  "Women's Dept Visitors": true,
  "Boat Abandoner": false
 },
"replaces": [],
"shard_token": 21000096
}
<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
    <DisplayName>Extract Variables 1</DisplayName>
    <FaultRules/>
    <JSONPayload>
        <Variable name="name">
            <JSONPath>$.flags.Book%20Purchaser</JSONPath>
        </Variable>
    </JSONPayload>
    <Source clearPayload="false">request</Source>
    <VariablePrefix>apigee</VariablePrefix>
</ExtractVariables>