我CSHARP類,如下所示:打字稿嵌套類,反序列化JSON
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應用程序。
我無法讓我的「目標」嵌套類和它的嵌套類「目標」屬性在角度應用程序中設置。
它看起來像對象類型。我無法獲得價值。
我該如何解析它?
你的意思是,該屬性沒有設置?你能否從Web-API提供API方法的代碼? – Nikolaus
是的,該屬性未設置。 – Seyfullah
我添加了web api方法。 – Seyfullah