/// <summary> /// 设置参数到提交json中去 /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <returns></returns> public sealed override bool SetPredefinedKeyValue(string key, object value) { if (RootKeys.Contains(key)) { // This key should be in the root level RootJson.Add(key, JToken.FromObject(value)); } else if (ApsKeys.Contains(key)) { // This key should be in the aps level JObject apsJson = null; JObject payloadJson = null; if (RootJson.Properties().Any(p => p.Name == "payload")) { payloadJson = RootJson.Property("payload").Value.ToObject <JObject>(); } else { payloadJson = new JObject(); RootJson.Add("payload", payloadJson); } if (payloadJson.Properties().Any(p => p.Name == "aps")) { apsJson = payloadJson.Property("aps").Value.ToObject <JObject>(); } else { apsJson = new JObject(); payloadJson.Add("aps", apsJson); } apsJson.Add(key, JToken.FromObject(value)); //需要重新赋值,否则值设置不上 payloadJson.Property("aps").Value = apsJson; RootJson.Property("payload").Value = payloadJson; } else if (PolicyKeys.Contains(key)) { // This key should be in the body level JObject policyJson = null; if (RootJson.Properties().Any(p => p.Name == "policy")) { policyJson = RootJson.Property("policy").Value.ToObject <JObject>(); } else { policyJson = new JObject(); RootJson.Add("policy", policyJson); } policyJson.Add(key, JToken.FromObject(value)); //需要重新赋值,否则值设置不上 RootJson.Property("policy").Value = policyJson; } else { if (key == "payload" || key == "aps" || key == "policy") { throw new Exception("You don't need to set value for " + key + " , just set values for the sub keys in it."); } else { throw new Exception("Unknownd key: " + key); } } return(true); }
/// <summary> /// Set key/value in the RootJson, for the keys can be set please see RootKeys, PayloadKeys, /// BodyKeys and PolicyKeys. /// 设置预定义的key/value /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <returns></returns> public sealed override bool SetPredefinedKeyValue(string key, object value) { if (RootKeys.Contains(key)) { // This key should be in the root level RootJson.Add(key, JToken.FromObject(value)); } else if (PayloadKeys.Contains(key)) { // This key should be in the payload level JObject payloadJson = null; if (RootJson.Properties().Any(p => p.Name == "payload")) { payloadJson = RootJson.GetValue("payload").ToObject <JObject>(); } else { payloadJson = new JObject(); RootJson.Add("payload", payloadJson); } payloadJson.Add(key, JToken.FromObject(value)); //需要重新赋值,否则值设置不上 RootJson.Property("payload").Value = payloadJson; } else if (BodyKeys.Contains(key)) { // This key should be in the body level JObject bodyJson = null; JObject payloadJson = null; // 'body' is under 'payload', so build a payload if it doesn't exist if (RootJson.Properties().Any(p => p.Name == "payload")) { payloadJson = RootJson.Property("payload").Value.ToObject <JObject>(); } else { payloadJson = new JObject(); RootJson.Add("payload", payloadJson); } // Get body JSONObject, generate one if not existed if (payloadJson.Properties().Any(p => p.Name == "body")) { bodyJson = payloadJson.GetValue("body").ToObject <JObject>(); } else { bodyJson = new JObject(); payloadJson.Add("body", bodyJson); } bodyJson.Add(key, JToken.FromObject(value)); //需要重新赋值,否则值设置不上 payloadJson.Property("body").Value = bodyJson; RootJson.Property("payload").Value = payloadJson; } else if (PolicyKeys.Contains(key)) { // This key should be in the body level JObject policyJson = null; if (RootJson.Properties().Any(p => p.Name == "policy")) { policyJson = RootJson.Property("policy").Value.ToObject <JObject>(); } else { policyJson = new JObject(); RootJson.Add("policy", policyJson); } policyJson.Add(key, JToken.FromObject(value)); //需要重新赋值,否则值设置不上 RootJson.Property("policy").Value = policyJson; } else { if (key == "payload" || key == "body" || key == "policy" || key == "extra") { throw new Exception("You don't need to set value for " + key + " , just set values for the sub keys in it."); } else { throw new Exception("Unknown key: " + key); } } return(true); }