使用嵌套类创建类的Javascript JSON

我想在JavaScript中创建一个具有嵌套对象的JSON对象。

这是课程:

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 } 

这是我想要输出的最终字符串:

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

这样做的正确方法是什么?

如果重要,我在后端使用Newtonsoft JSON库。

它比我想象的容易得多。

这是JavaScript:

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

在服务器端,使用Newtonsoft JSON库进行反序列化甚至更为简单:

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