Ich habe csharp Klasse wie folgt:Typoskript Klasse verschachtelt, Deserialisierung 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;
}
ich ein Typoskript Klasse wie folgt:
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;
}
Meine Api-Codes sind wie folgt.
Api Methoden sind wie folgt:
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"); }
}
}
Ich habe eine asp.net Kern Web-API-Anwendung JSON-Objekte dienen.
Ich kann meine verschachtelte Klasse "Ziele" nicht bekommen, und ihre geschachtelte Klasse "Targets" -Eigenschaft wird in eckige Anwendung gesetzt.
Es scheint als Objekttyp. Ich kann keine Werte bekommen.
Wie kann ich es analysieren?
Sie meinen, wird die Eigenschaft nicht festgelegt? Kannst du bitte den Code der API-Methode von deiner Web-API zur Verfügung stellen? – Nikolaus
Ja, die Eigenschaft ist nicht festgelegt. – Seyfullah
Ich habe Web API Methoden hinzugefügt. – Seyfullah