我有csharp类如下:
public class StrategicPlan
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string Unit { get; set; }
public List<Goal> Goals { get; set; }
public class Goal
{
public string GoalName { get; set; }
public int ImplementationRatio { get; set; }
public List<Target> Targets { get; set; }
public class Target
{
public string TargetName { get; set; }
public int ImplementationRatio { get; set; }
}
}
public DateTime UpdatedOn { get; set; } = DateTime.Now;
public DateTime CreatedOn { get; set; } = DateTime.Now;
public int UserId { get; set; } = 0;
}
我有一个打字稿类如下:
export class StrategicPlan {
constructor(jsonStr: string) {
let jsonObj: any = JSON.parse(jsonStr);
for (let prop in jsonObj) {
this[prop] = jsonObj[prop];
}
}
Id: string;
Unit: string;
Goals: [
{
GoalName: string,
ImplementationRatio: number,
Targets: [
{
TargetName: string;
ImplementationRatio: number;
}
]
}];
UpdatedOn: Date;
CreatedOn: Date;
UserId: number;
}
我的Api代码如下。
Api方法如下:
public interface IRepository<T>
{
Task<IEnumerable<T>> GetAll();
Task<T> Get(string id);
Task Add(T item);
Task<DeleteResult> Remove(string id);
//Task<UpdateResult> Update(string id, string body);
Task<UpdateResult> Update(string id, T item);
//// demo interface - full document update
//Task<ReplaceOneResult> UpdateDocument(ObjectId id, string body);
// should be used with high cautious, only in relation with demo setup
Task<DeleteResult> RemoveAll();
}
[Route("api/[controller]")]
public class StrategicPlansController : Controller
{
private readonly IRepository<StrategicPlan> _repository;
public StrategicPlansController(IRepository<StrategicPlan> repository)
{
_repository = repository;
}
// GET: api/StrategicPlan
[HttpGet]
public Task<string> Get()
{
return GetInternal();
}
private async Task<string> GetInternal()
{
var items = await _repository.GetAll();
return JsonConvert.SerializeObject(items);
}
}
public class StrategicPlanRepository : IRepository<StrategicPlan>
{
private readonly MongoContext _context = null;
public StrategicPlanRepository(IOptions<Settings> settings)
{
_context = new MongoContext(settings);
}
public async Task<IEnumerable<StrategicPlan>> GetAll()
{
try
{
return await _context.StrategicPlans.Find(_ => true).ToListAsync();
}
catch (Exception ex)
{
// log or manage the exception
throw ex;
}
}
}
public class MongoContext
{
private readonly IMongoDatabase _database = null;
public MongoContext(IOptions<Settings> settings)
{
var client = new MongoClient(settings.Value.ConnectionString);
if (client != null)
_database = client.GetDatabase(settings.Value.Database);
}
public IMongoCollection<StrategicPlan> StrategicPlans
{
get { return _database.GetCollection<StrategicPlan>("StrategicPlans"); }
}
}
我有一个服务于JSON对象的asp.net核心Web Api应用程序。
我无法得到我的&#34;目标&#34;嵌套类及其嵌套类&#34;目标&#34;属性设置为角度应用。
它似乎是对象类型。我无法获得价值。
我该如何解析它?
答案 0 :(得分:0)
由于我对MongoDb了解不多,接下来尝试: 也许List-Initializer可以提供帮助:
public class StrategicPlan
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }
public string Unit { get; set; }
public List<Goal> Goals { get; set; } = new List<Goal>();
public class Goal
{
public string GoalName { get; set; }
public int ImplementationRatio { get; set; }
public List<Target> Targets { get; set; } = new List<Target>();
public class Target
{
public string TargetName { get; set; }
public int ImplementationRatio { get; set; }
}
}
public DateTime UpdatedOn { get; set; } = DateTime.Now;
public DateTime CreatedOn { get; set; } = DateTime.Now;
public int UserId { get; set; } = 0;
}