对象数组转JSON

本文介绍了一种将C#中的复杂对象结构(包括数组和嵌套对象)转换为JSON字符串的方法,并演示了如何使用Newtonsoft库进行序列化与反序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做项目的时候,需要把一个对象数据转为json,使用Newtonsoft 转化的方法如下:

//这是一个房间的数组,其中每个房间又有一个桌位的数组,要把这个复杂的数据结构变化为JSON,其实非常容易:

public List<tianMenu.Model.mroom> DataTableToList(DataTable dt)
{
            mtable mTable = new mtable();
List<tianMenu.Model.mroom> modelList = new List<tianMenu.Model.mroom>();
int rowsCount = dt.Rows.Count;
if (rowsCount > 0)
{
tianMenu.Model.mroom model;
for (int n = 0; n < rowsCount; n++)
{
model = new tianMenu.Model.mroom();
if(dt.Rows[n]["ID"]!=null && dt.Rows[n]["ID"].ToString()!="")
{
model.ID=int.Parse(dt.Rows[n]["ID"].ToString());
}
if(dt.Rows[n]["room_name"]!=null && dt.Rows[n]["room_name"].ToString()!="")
{
model.room_name=dt.Rows[n]["room_name"].ToString();
}
if(dt.Rows[n]["remark"]!=null && dt.Rows[n]["remark"].ToString()!="")
{
model.remark=dt.Rows[n]["remark"].ToString();
}
modelList.Add(model);
                    model.tableList = mTable.GetModelList("room_id="+model.ID);
}
}
return modelList;
}

            tianMenu.BLL.mroom  room=new BLL.mroom();


           List <tianMenu.Model.mroom> rooms= room.GetModelList("");


          
        string xx=   Newtonsoft.Json.JsonConvert.SerializeObject(rooms);
        Response.Write("<hr>");
        Response.Write(xx);


转回来的方法:

               JsonConvert.DeserializeObject(of  tianMenu.BLL.mroom())(xx);

对象数组json对象的方法有多种方式。 1. 使用JSON库:可以使用现有的JSON库,如json-lib、fastjson等,首先将对象数组换成java.util.List对象,然后使用JSON库将List对象换成JSON字符串,最后再将JSON字符串换成JSON对象。例如使用fastjson库的代码如下: ``` import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class Main { public static void main(String[] args) { // 假设有一个对象数组 Person[] persons = new Person[2]; persons[0] = new Person("张三", 20); persons[1] = new Person("李四", 30); // 将对象数组换成JSONArray JSONArray jsonArray = (JSONArray) JSONArray.toJSON(persons); // 将JSONArray换成JSONObject JSONObject jsonObject = new JSONObject(); jsonObject.put("persons", jsonArray); // 输出JSON对象 System.out.println(jsonObject.toJSONString()); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } // getter和setter方法 } ``` 2. 手动拼接:也可以手动拼接JSON字符串,遍历对象数组的每个对象,将其属性值拼接成键值对的形式,再将这些键值对拼接成JSON字符串。例如: ``` public class Main { public static void main(String[] args) { // 假设有一个对象数组 Person[] persons = new Person[2]; persons[0] = new Person("张三", 20); persons[1] = new Person("李四", 30); // 手动拼接JSON字符串 StringBuilder json = new StringBuilder(); json.append("["); for (int i = 0; i < persons.length; i++) { json.append("{\"name\": \"").append(persons[i].getName()).append("\", \"age\": ").append(persons[i].getAge()).append("}"); if (i < persons.length - 1) { json.append(","); } } json.append("]"); // 输出JSON字符串 System.out.println(json.toString()); } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } // getter和setter方法 } ``` 以上是两种常见的将对象数组换成JSON对象的方法,可以根据实际需要选择适合的方式进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值