Hi
I am trying to send a list of objects to the server - not a map but I couldn't find how to read it on the server.
public class Skill { string name; int level; int skillpoints; } // LIST not MAP as the same skill can be trained several times public static List<Skill> skillsInTraining = new List<Skill>(); public static void SaveSkillTrainingQueue() { var test = PlayFab.Json.JsonWrapper.SerializeObject(skillsInTraining); var request = new ExecuteCloudScriptRequest { FunctionName = "SaveSkillTrainingQueue", FunctionParameter = new { skillsInTraining = skillsInTraining.Count, skills = test, }, GeneratePlayStreamEvent = true }; PlayFabClientAPI.ExecuteCloudScript(request, OnSaveSkillTrainingQueueSuccess, PlayFabBridge.PlayFabErrorCallback); }
How can I access each skill.name and level in the server?
function SaveSkillTrainingQueue(args) { var count = args.skillsInTraining; var skills = args.skills; log.debug("SaveSkillTrainingQueue count= " + args.skillsInTraining); // OK log.debug(" " + JSON.stringify(skills)); //for (var skill in args.skills) //{ // log.debug(" " + JSON.stringify(skill)); // log.debug(" " + skill.name); //} var tmp = JSON.stringify(args.skills); for (var i=0; i<count; i++) { log.debug(i + "=" + tmp[i]); log.debug("name = " + tmp[i].name); // <--------- NOK } },
Hi
I am trying to send a List - not a Dictionary - of objects to be executed by a script.
public struct Skill { string name; int level; int skillpoint; } // NOT a map as the same skill can be multiple times public List<Skill> skillInTraining = new List<Skill>(); public static void SaveSkillTrainingQueue() { var test = PlayFab.Json.JsonWrapper.SerializeObject(skillsInTraining); var request = new ExecuteCloudScriptRequest { FunctionName = "SaveSkillTrainingQueue", FunctionParameter = new { skillsInTraining = skillsInTraining.Count, skills = test, }, GeneratePlayStreamEvent = true }; PlayFabClientAPI.ExecuteCloudScript(request, OnSaveSkillTrainingQueueSuccess, PlayFabBridge.PlayFabErrorCallback); }
How can I access the values such as the skill.name on the server?
My attempts so far:
function SaveSkillTrainingQueue(args) { var count = args.skillsInTraining; var skills = args.skills; log.debug("SaveSkillTrainingQueue count= " + args.skillsInTraining); // ok log.debug(" " + JSON.stringify(skills)); // nok //for (var skill in args.skills) //{ // log.debug(" " + JSON.stringify(skill)); // log.debug(" " + skill.name); not found //} var tmp = JSON.stringify(args.skills); for (var i=0; i<count; i++) { log.debug(i + "=" + tmp[i]); log.debug("name = " + tmp[i].name); // not found } }
Answer by v_humcin · Jun 24, 2019 at 09:44 PM
Your method of passing in the list will work with a small change. The "skills" object is passed in as string, so you will need to use JSON.parse() instead of JSON.stringify() to turn it into a JSON object which will allow you to access the fields inside.
Update part of a JSON 1 Answer
Playfab randomly throws ServiceUnavailable / Timeout errors. 1 Answer
Having trouble with getting invalid input parameters error when calling UpdateUserData. 1 Answer
Question: Reading data from player account 1 Answer
Trouble uploading a text file as an entity file onto playfab. 1 Answer