C# 生成json串的问题 请问除了这种方式以外是否还有其他方式实现

json格式
{
"d":{
"i":"/2016-04-26/c967c228bbea4f8f9c7814a6d9f6b4e2.jpg",
"si":"/2016-04-26/c967c228bbea4f8f9c7814a6d9f6b4e2.jpg",
},
"t":5
}

//混合实体
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PcHealthDoctor.beans
{
public class Photo
{
///
/// 文件ID
///
public String i { get; set; }
///
/// 缩略图文件ID
///
public String si { get; set; }
}
public class PhotoRoot
{
///
///
///
public Photo d { get; set; }
///
/// 消息类型
///
public int? t { get; set; }
}
public class PhotoClex
{
public Photo Photo { get; set; }
public PhotoRoot PhotoRoot { get; set; }
}
}

//使用
PhotoClex photo = new PhotoClex();
这个报错,photo 是null
photo.PhotoRoot.t = 1;
photo.Photo.i = "/2017-04-17/eae09917f3c7423394ca30cc9c7f026a.png";
photo.Photo.si = "/2017-04-17/f81a6d5c4ace42628b7f6374c097638a.png";
string a = photo.ToString();

最后一行改下string a = JsonMapper.ToJson( photo);

解析:
接收字符串b转化的Json
JsonData info = JsonMapper.ToObject(b);

要添加默认构造函数初始化对象,要不未nul,你引用了当然报错


    public class PhotoRoot
    {
        public Photo d { get; set; }

        public int? t { get; set; }
        public PhotoRoot() { d = new Photo(); }
    }


    public class PhotoClex
    {
        public Photo Photo { get; set; }
        public PhotoRoot PhotoRoot { get; set; }
        public PhotoClex() { Photo = new Photo(); PhotoRoot = new PhotoRoot(); }
    }