Java 使用改型2的JSON嵌套模式引用

Java 使用改型2的JSON嵌套模式引用,java,android,json,mongoose,retrofit,Java,Android,Json,Mongoose,Retrofit,我对改型2和Android/后端编程比较陌生,我想知道如何正确地将我的JSON模式转换为Android学校项目的Java 所以现在的情况是,我需要在我的应用程序中加入一些“挑战”。 目前的结构有点复杂,我甚至不确定我们是否工作正常,但我会在这里试一试 以下是REST后端上的mongoose模式: Challenge:这个对象保存所有普通属性和对challengeType的引用,因为我们的挑战是由多态性定义的 var ChallengeSchema = new Schema({ _id: Obje

我对改型2和Android/后端编程比较陌生,我想知道如何正确地将我的JSON模式转换为Android学校项目的Java

所以现在的情况是,我需要在我的应用程序中加入一些“挑战”。 目前的结构有点复杂,我甚至不确定我们是否工作正常,但我会在这里试一试

以下是REST后端上的mongoose模式:

Challenge:这个对象保存所有普通属性和对challengeType的引用,因为我们的挑战是由多态性定义的

var ChallengeSchema = new Schema({
_id: ObjectId,
name: String,
description: [String],
challengeType:{
    type: Schema.ObjectId, ref: 'ChallengeType'
},
state: Number,
difficulty: Number
});
现在,我们的挑战类型定义为:

var ChallengeTypeSchema = new Schema({
    _id: ObjectId
}),
  RecipeChallengeSchema = new Schema({
    _id: ObjectId,
    joined: Number,
    dietTypeMaker: {
        type: Schema.ObjectId, ref: 'DietTypeMaker'
    }
}),
  FastfoodChallengeSchema = new Schema({
    _id: ObjectId,
    joined: Number
}),
  ThursdayVeggieDayChallengeSchema = new Schema({
    _id: ObjectId,
    joined: Number,
    dietTypeMaker1: {
        type: Schema.ObjectId, ref: 'DietTypeMaker'
    },
    dietTypeMaker2: {
        type: Schema.ObjectId, ref: 'DietTypeMaker'
    }
}),
  RestaurantChallengeSchema = new Schema({
    _id: ObjectId,
    joined: Number,
    city: {
        type: Schema.ObjectId, ref: 'City'
    },
    restaurantTypeMaker: {
        type: Schema.ObjectId, ref: 'RestaurantTypeMaker'
    }
});
module.exports = mongoose.model('ChallengeType',ChallengeTypeSchema,'challengeTypes');
module.exports = mongoose.model('RecipeChallenge', RecipeChallengeSchema, 'challengeTypes', ['ChallengeType']);
module.exports = mongoose.model('FastfoodChallenge', FastfoodChallengeSchema, 'challengeTypes', ['RecipeChallenge']);
module.exports = mongoose.model('ThursdayVeggieDayChallenge', ThursdayVeggieDayChallengeSchema, 'challengeTypes', ['RecipeChallenge']);
module.exports = mongoose.model('RestaurantChallenge', RestaurantChallengeSchema, 'challengeTypes', ['ChallengeType']);
这些与DietTypeMaker或RestaurantTypeMaker相关,后者根据当前的挑战决定我们的食谱或餐厅

var RestaurantTypeMakerSchema = new Schema({
_id: ObjectId,
eatingPlace: {
    restaurants: [
        {
            type: Schema.ObjectId, ref: 'Restaurant'
        }
    ]
},
gastronomic: {
    restaurants: [
        {
            type: Schema.ObjectId, ref: 'Restaurant'
        }
    ]
},
snackbar: {
    restaurants: [
        {
            type: Schema.ObjectId, ref: 'Restaurant'
        }
    ]
},
catering: {
    restaurants: [
        {
            type: Schema.ObjectId, ref: 'Restaurant'
        }
    ]
}
});

其中每一项都涉及一个食谱或一家餐厅:

var RecipeSchema = new Schema({
_id: ObjectId,
title: String,
difficultyRate: Number,
ingredients: [
    {
        name: String,
        qty: String
    }
],
description: [String],
extraInfo: {
    preparationTime: Number,
    cookDifficulty: Number,
    recipeType: Number,
    dietTypes: [Number],
    isFastFood: Boolean
},
image: {
    data: Buffer, contentType: String
}
});

所有这些都需要转换为我们应用程序的java代码。现在我知道了怎么做pojo了,我已经为食谱和餐馆做过了。我可以使用改型2从后端正确获取它们。现在我一直关注的是我们所有模式引用的复杂结构

我们让事情变得复杂了吗,或者这是可能的

var RecipeSchema = new Schema({
_id: ObjectId,
title: String,
difficultyRate: Number,
ingredients: [
    {
        name: String,
        qty: String
    }
],
description: [String],
extraInfo: {
    preparationTime: Number,
    cookDifficulty: Number,
    recipeType: Number,
    dietTypes: [Number],
    isFastFood: Boolean
},
image: {
    data: Buffer, contentType: String
}
});
var RestaurantSchema = new Schema({
_id: ObjectId,
name: String,
streetName: String,
houseNumber: Number,
city: {
    type: Schema.ObjectId, ref: 'City'
},
restaurantTypes: [Number],
preferences: [Number],
websiteLink: String,
emailaddress: String,
description: [String]
});