Créer Javascript JSON de classe avec classe imbriquée

Je souhaite créer un objet JSON en JavaScript qui comporte un objet imbriqué.

Voici les cours:

public class CellChanged { private CellLocation _Location = null; private double _CellValue = 0; public CellLocation Location { get { return this._Location; } set { this._Location= value; } } public double CellValue { get { return this._CellValue; } set { this._CellValue = value; } } } public class CellLocation { #region Members private int _Worksheet = 0; private int _Row = 0; private int _Column = 0; private string _CellName; #endregion //Members #region Properties public int Worksheet { get { return this._Worksheet; } internal set { this._Worksheet = value; } } public int Row { get { return this._Row; } internal set { this._Row = value; } } public int Column { get { return this._Column; } set { this._Column = value; } } public string CellName { get { return this._CellName; } internal set { this._CellName = value; } } #endregion //Properties #region Constructors internal CellLocation() { } public CellLocation(int worksheet, string cellName) { this.Worksheet = worksheet; this.CellName = cellName; int i = 0; string columnRaw = String.Empty; string rowRaw = String.Empty; int column = 0; int row = 0; while (Char.IsLetter(this.CellName, i)) { columnRaw += this.CellName.Substring(i, 1); i++; } column = Utilities.Excel.ColumnLetterToNumber(columnRaw); rowRaw = this.CellName.Substring(i); if (!Int32.TryParse(rowRaw, out row)) throw new ApplicationException(String.Format("Cell name {0} is invalid", cellName)); this.Row = row - 1; this.Column = column; } [JsonConstructorAttribute] public CellLocation(int worksheet, int row, int column) { this.Worksheet = worksheet; this.Row = row; this.Column = column; //set the cell name this.CellName = String.Concat(Utilities.Excel.ColumnNumberToLetter(column), row + 1); } #endregion //Constructors } 

C'est la dernière chaîne à laquelle je veux ressembler:

 "{\"Location\":{\"Worksheet\":1,\"Row\":2,\"Column\":3},\"CellValue\":4.5}" 

Quelle est la manière correcte de faire cela?

Si cela compte, j'utilise la bibliothèque Newtonsoft JSON sur le backend.

C'est beaucoup plus facile que ce que je pensais.

C'est le JavaScript:

 var cellChanged = { "Location": { "Worksheet": workSheetCurrent , "Row": row , "Column": column } , "CellValue": cellValue }; 

Du côté du serveur, la désérialisation à l'aide de la librairie Newtonsoft JSON est même quelque chose:

 CellChanged cell = JsonConvert.DeserializeObject<CellChanged>(context.Request["CellChanged"]);