安巴里+;如何在json REST API中设置值

安巴里+;如何在json REST API中设置值,json,bash,api,ambari,Json,Bash,Api,Ambari,以下API示例将在ambari export service=kafka curl -u admin:admin -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":{"context":"_PARSE_.STOP.$service","operation_level":{"level":"SERVICE","cluster_name":"$CLUSTER_NAME","service_name":"$service"}},"Bod

以下API示例将在
ambari

export service=kafka

curl -u admin:admin -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":{"context":"_PARSE_.STOP.$service","operation_level":{"level":"SERVICE","cluster_name":"$CLUSTER_NAME","service_name":"$service"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service 
问题在于语法-
\u PARSE\u.STOP.$service

我们看到实际上服务值-
kafka
没有在-PARSE.STOP.$service中设置

因此,ambri将名称视为-PARSE.STOP.$service,而不是PARSE.STOP.kafka


知道如何在
json
语法中设置值
kafka
吗?

当字符串使用单引号类型的文本时,变量不会被替换,因此您需要将字符串分成多个部分,以便能够将一些值插入结果字符串中

export service=kafka
curl-u管理员:admin-i\
-H'X-请求者:ambari'\
-放\
-d'{“RequestInfo”:{“context”:“{u PARSE_u.STOP.$service'”,“operation_level”:{“level”:“service”,“cluster_name”:“$cluster_name'”,“service_name”:“$service”}}”,Body:{“ServiceInfo”:{“state”:“INSTALLED”}\
http://$HOST:8080/api/v1/clusters/$CLUSTER\u NAME/services/$service
下面是一个简单的示例,可以清楚地说明这一点:

#/bin/bash
服务=XXX
json='{“A”:“$service”}”
echo“错误的JSON:$JSON”
json='{A:'$service'}'#此字符串由3部分组成{A:'+$service+''}'
echo“好的JSON:$JSON”
输出:

错误的JSON:{“A”:“$service”}


好的JSON:{“A”:“XXX”}

这能回答你的问题吗?