Как создать объект определенного типа из JSON в Parse
У меня есть скрипт Cloud Code, который извлекает JSON из службы. Этот JSON включает в себя массив объектов. Я хочу сохранить их в Parse, но используя определенный класс Parse. Как мне это сделать?
Вот мой код
Parse.Cloud.httpRequest({
url: 'http://myservicehost.com',
headers: {
'Authorization': 'XXX'
},
success: function(httpResponse) {
console.log("Success!");
var json = JSON.parse(httpResponse.text);
var recipes = json.results;
for(int i=0; i<recipes.length; i++) {
var Recipe = Parse.Object.extend("Recipe");
var recipeFromJSON = recipes[i];
// how do i save recipeFromJSON into Recipe without setting all the fields one by one?
}
}
});
2 ответа
Я думаю, что я получил это работает. Вам необходимо установить для свойства className в объекте данных JSON имя вашего класса. (Нашел его в исходном коде) Но я попробовал это только на стороне клиента.
for(int i=0; i<recipes.length; i++) {
var recipeFromJSON = recipes[i];
recipeFromJSON.className = "Recipe";
var recipeParseObject = Parse.Object.fromJSON(recipeFromJSON);
// do stuff with recipeParseObject
}
IHMO этот вопрос не является дубликатом Как использовать Parse.Object из JSON? [дубликат]
В этом вопросе JSON не был создан самой функцией Parse.Object.toJSON, а поступил из другой службы.
const object = new Parse.Object('MyClass')
const asJson = object.toJSON();
// asJson.className = 'MyClass';
Parse.Object.fromJSON(asJson);
// Without L3 this results into:
// Error: Cannot create an object without a className
// It makes no sense (to me) why the Parse.Object.toJSON is not reversible
Пример с этой страницы https://parse.com/docs/js/guide
var GameScore = Parse.Object.extend("GameScore");
var gameScore = new GameScore();
gameScore.save({
score: 1337,
playerName: "Sean Plott",
cheatMode: false
}, {
success: function(gameScore) {
// The object was saved successfully.
},
error: function(gameScore, error) {
// The save failed.
// error is a Parse.Error with an error code and message.
}
});