核心代码
对象转json
string jsons = JsonConvert.SerializeObject(program.ammeterGameObjects_LIST);
json转对象
string Json= FileManager.Instance.ReadFile(Application.streamingAssetsPath + "/" + 在streamingAssets下的路径,在streamingAssets下主要是发布之后也可以更改,无需再次发布也可以更改参数);
var listDevice = JsonConvert.DeserializeObject<List<DeviceGameObejct>>(Json);// <> 中是需要转换的文件类型,小括号中是读取到的json的string,这就得到了对象的list,
C#对象转实体
示例代码
//一个对象
public class AmmeterGameObject
{
public MinuteInfo minuteInfo = new MinuteInfo();
public int Mark;
public string Name;
}
//对象所包含的部分属性
public class MinuteInfo
{
public string Data;
public int SlaveId;//1234,
public ushort ParameterAddress;//40001 40002
public Loaction loaction;
public float Power = 16.5f;
public string Unit = "kw/h";
public float MAX = 0.0F;
public float MIN = 0.0F;
}
//一个枚举的属性,枚举的本质上 int 类型。
public enum Loaction
{
All = 1,
Office,
Warehosue,
WorkA,
WorkB,
}
然后创建对应的对象,给予对象值
示例代码
//创建对象并将对象赋值
private void MakeJson()
{
AmmeterGameObject ammeterGameObject1 = new AmmeterGameObject()
{
minuteInfo = new MinuteInfo()
{
Data = " ",
SlaveId = 1,
ParameterAddress = 40001,
loaction = Loaction.All,
Power = 16.5f,
},
Mark = 1,
Name = "小区",
};
AmmeterGameObject ammeterGameObject2 = new AmmeterGameObject()
{
minuteInfo = new MinuteInfo()
{
Data = " ",
SlaveId = 1,
ParameterAddress = 40002,
loaction = Loaction.All,
Power = 16.5f,
},
Mark = 2,
Name = "楼A",
};
AmmeterGameObject ammeterGameObject3 = new AmmeterGameObject()
{
minuteInfo = new MinuteInfo()
{
Data = " ",
SlaveId = 1,
ParameterAddress = 40003,
loaction = Loaction.Warehosue,
Power = 16.5f,
},
Mark = 3,
Name = "楼B",
};
}
然后就将对象添加到一个对应类型的list中
示例代码
private List<AmmeterGameObject> ammeterGameObjects_LIST = new List<AmmeterGameObject>();
ammeterGameObjects_LIST.Add(ammeterGameObject1);
ammeterGameObjects_LIST.Add(ammeterGameObject2);
ammeterGameObjects_LIST.Add(ammeterGameObject3);
然后转成Json
示例代码
string jsons = JsonConvert.SerializeObject(program.ammeterGameObjects_LIST);
这里需要引用一个DLL,如果是vs可以Alt+Enter来包,然后添加包中的命名空间就可以了, 以上就是对象转成Json
C#实体转对象
依旧使用上面的对象
string Json= FileManager.Instance.ReadFile(Application.streamingAssetsPath + "/" + 在streamingAssets下的路径,在streamingAssets下主要是发布之后也可以更改,无需再次发布也可以更改参数);
var listDevice = JsonConvert.DeserializeObject<List<DeviceGameObejct>>(Json);// <> 中是需要转换的文件类型,小括号中是读取到的json的string,这就得到了对象的list,
注意到上面在对象转json的时候使用的是AmmeterGameObject 而到了实体转对象使用的是DeviceGameObejct ,这是不影响的,他会自己找到后他属性名称相同的属性赋值,至于不相同的会维持默认值。
不会的私信,
Enjoy !
|