将List对象列表转换成JSON格式的类实现方法_json

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。引用于[http://www.json.org/json-zh.html]

一般应用中,我习惯性地把结果集以更通用的IList<object>对象列表方式保存(可能会对性能有些影响)来保证类间交互时的通用性,降低函数功能对具体类的耦合。但AJAX调用时,还需要把对象列表转换成JSON数据交给前端显示。有麻烦。

研究了一下JSON的对象定义和集合定义

 感觉利用反射来生成JSON还比较方便。代码如下:

Code
//
// ObjectListToJSON
// Copyright (c) 2008 pcode. All rights reserved.
//
// Author(s):
//
//   pcode,jy@cjlu.edu.cn
// 此类用于将List<object>转换为json数据格式
// 目前仅能处理一个object的基础数据类型而且对[ { }] \等对json有伤害影响特殊符号没有特殊处理
// 希望有兄弟继续完善

using System.Reflection;
using System.Collections.Generic;

public class ObjectListToJSON
{
  #region 反射一个对象所有属性和属性值和将一个对象的反射结果封装成jsons格式
  /**
     * 对象的全部属性和属性值。用于填写json的{}内数据
     * 生成后的格式类似
     * "属性1":"属性值"
     * 将这些属性名和属性值写入字符串列表返回
     * */
  private List<string> GetObjectProperty(object o)
  {
    List<string> propertyslist = new List<string>();
    PropertyInfo[] propertys = o.GetType().GetProperties();
    foreach (PropertyInfo p in propertys)
    {
      propertyslist.Add("\"" + p.Name.ToString() + "\":\"" + p.GetValue(o, null) + "\"");
    }
    return propertyslist;
  }
  /**
   * 将一个对象的所有属性和属性值按json的格式要求输入为一个封装后的结果。
   *
   * 返回值类似{"属性1":"属性1值","属性2":"属性2值","属性3":"属性3值"}
   *
   * */
  private string OneObjectToJSON(object o)
  {
    string result = "{";
    List<string> ls_propertys = new List<string>();
    ls_propertys = GetObjectProperty(o);
    foreach (string str_property in ls_propertys)
    {
      if (result.Equals("{"))
      {
        result = result + str_property;
      }
      else
      {
        result = result + "," + str_property + "";
      }
    }
    return result + "}";
  }
  #endregion
  /**
     * 把对象列表转换成json串
     * */
  public string toJSON(List<object> objlist)
  {//覆写,给懒人一个不写classname的机会
    return toJSON(objlist, string.Empty);
  }
  public string toJSON(List<object> objlist, string classname)
  {
    string result = "{";
    if (classname.Equals(string.Empty))//如果没有给定类的名称,那么自做聪明地安一个
    {
      object o = objlist[0]
      classname = o.GetType().ToString();
    }
    result += "\"" + classname + "\":[";
    bool firstline = true;//处理第一行前面不加","号
    foreach (object oo in objlist)
    {
      if (!firstline)
      {
        result = result + "," + OneObjectToJSON(oo);
      }
      else
      {
        result = result + OneObjectToJSON(oo) + "";
        firstline = false;
      }
    }
    return result + "]}";
  }

}

OK,我们建立一个测试来验证一下它是否生效。

先建立一个对象定义person.cs

namespace Model
{
  public class Person
  {
    public string ID { get; set; }
    public string Name { get; set; }
    public string Sex { get; set; }
  }
}

然后建立测试类

我用了一种非常原始的方法生成了对象列表,其实可以从数据库查询,怕把事情搞得太复杂。呵呵。

using NUnit.Framework;
using System.Collections.Generic;
namespace JSon
{
  [TestFixture]
  public class TestObjectToJSON
  {
    [Test]
    public void dotest() {
      Model.Person p1 = new Model.Person();
      p1.ID = "1";
      p1.Name = "p1";
      p1.Sex = "s1";
      Model.Person p2 = new Model.Person();
      p2.ID = "2";
      p2.Name = "p2";
      p2.Sex = "s2";

      Model.Person p3 = new Model.Person();
      p3.ID = "3";
      p3.Name = "p3";
      p3.Sex = "s3";
      List<object> lp = new List<object>();
      lp.Add(p1);
      lp.Add(p2);
      lp.Add(p3);

      ObjectListToJSON t = new ObjectListToJSON();
      string json = t.toJSON(lp, "persons");
      System.Console.Write(json);
    }
  }
}

跑一下Nuint,我们想要的json串已经生成了。

以上这篇将List对象列表转换成JSON格式的类实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索list对象转换成json
json转list对象、fastjson转list对象、java json转list对象、jsonobject转list对象、json数组转list对象,以便于您获取更多的相关知识。

时间: 2024-10-21 23:43:16

将List对象列表转换成JSON格式的类实现方法_json的相关文章

arraylist-list对象集合如何转换成json格式(除了迭代之后拼成json格式)

问题描述 list对象集合如何转换成json格式(除了迭代之后拼成json格式) Student s1 = new Student(); s1.setName("张三"); s1.setAge("18"); Student s2 = new Student(); s2.setName("李四"); s2.setAge("22"); List s3 = new ArrayList(); s3.add(0,s1); s3.add(

responsebody-求springmvc中的@ResponseBody怎么配置,才能将自定义的po类转换成json格式

问题描述 求springmvc中的@ResponseBody怎么配置,才能将自定义的po类转换成json格式 在springmvc中,我想通过@ResponseBody的方式来返回json格式的数据,在mvc:annotation-driven/mvc:annotation-driven中应该怎么配置,网上找了很久没找到,我用的sprin版本是4.2.5的 我的Controller是这样的 前台的js是这么写的 在这个配置文件里面是不是还要配置一下啊?具体怎么配置,求教一下,小弟感激不尽. 解决

生成富文本编辑器生成内容转换成json格式,解析出错,在mysql里面用什么类型保存

问题描述 生成富文本编辑器生成内容转换成json格式,解析出错,在mysql里面用什么类型保存 富文本怎么保存?保存在mysql里面用什么样的类型,还有就是能够获取到富文本的内容(包括标签什么的),用json怎么转换,用过转义也不行?求助啊!!!!

C#实现集合转换成json格式数据的方法_C#教程

本文实例讲述了C#实现集合转换成json格式数据的方法.分享给大家供大家参考,具体如下: /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string ToJson(DataTable dt) { if (dt != null

ibatis查询date类型字段的数据无法转换成json格式

问题描述 ibatis已经获得正确的查询数据并返回至action,在转换成json格式时因为日期参数不匹配而报错.如果不查询带日期的字段就可以成功转换传递给jsp,请问这是该怎么解决?控制台输出的错误信息:action方法: 解决方案

php将数组转换成csv格式文件输出的方法

 本文实例讲述了php将数组转换成csv格式文件输出的方法.分享给大家供大家参考.具体实现方法如下: <?php $sales = array( array('east','2005-01-01','2005-02-01',12.54), array('west','2005-01-01','2005-02-01',546.33), array('south','2005-01-01','2005-02-01',93.26), array('north','2005-01-01','2005-0

把普通对象转换成json格式的对象的简单实例_json

1.什么叫做JSON? JSON只是一种数据格式(它不是一种新的数据类型) var obj = {name: "中国", age: 5000};//->普通格式的对象 var jsonObj = {"name": "中国", "age": 5000};//->JSON格式的对象 (只要把普通对象的属性名用""(不能是'')包起来,这样的格式就是我们JSON格式的对象) var data = [

把DataTable 转换成Json格式,适用于EasyUI 绑定DataGrid

本文转载:http://www.cnblogs.com/liang--liang/archive/2013/02/05/2893030.html public static string DataTable2Json(System.Data.DataTable dt) { System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder(); jsonBuilder.Append("{"); jsonBuilde

把U盘转换成NTFS格式的三种方法

  方法一. 将U盘插入到电脑的USB接口之后,然后打开"设备管理器",选择"磁盘驱动"下的那个你的U盘,然后右击选择属性,在属性对话框中,选择"为提高性能而优化",然后点击确定即可. 方法二. 如果你的U盘是新买的或者U盘内的数据已经备份到电脑了,那么可以在电脑上插入U盘,然后到"计算机"找到U盘盘符,接着鼠标右键选择"格式化(A)",选择"NTFS磁盘格式",选择"快速格式