В .net я сейчас занимаюсь этим:

public JsonResult GetStuff() {

  return Json(myClassInstance.Result); // Result => { data: something, message: something } 
}

Меня раздражает необходимость указывать Result каждый раз, когда я вызываю Json для экземпляра MyClass. Есть ли способ проинструктировать Json, как искать свойство для получения данных для сериализации? Или шаблонный метод для вызова сериализации?

// Something like this, when Json detect there is this method on the object class, it will invoke this method.
// ....


// Inside MyClass
public string ToJSON() {
  // serialize property

}
-1
bigopon 27 Май 2017 в 23:25

2 ответа

Лучший ответ

Вы всегда можете создать метод расширения для класса Controller. Что-то вроде этого:

    public static JsonResult ToMyJson(this Controller controller, MyType myData)
    {
        return controller.Json(myData.Result);
    }
1
Teodor Kurtev 27 Май 2017 в 20:32

Допустим, у вас есть это на данный момент:

public class MyData
{
    public MyResult Result { get; set; }
}

public MyData GetData() { return new MyData(); }

MyData data = GetData();
return Json(data.Result);

Тогда у вас в основном есть два варианта:

1. Вы можете отказаться от использования MyData:

public MyResult GetData() { return new MyData().Result; }

MyResult data = GetData();
return Json(data);

2. Или вы можете использовать вспомогательный метод (либо как BaseController, либо как расширение) (как написал @TeodorKurtev)

1
Camilo Terevinto 27 Май 2017 в 20:40