zoukankan      html  css  js  c++  java
  • toJSON

    View Code
    public static string ToJSON(IEnumerable array, params string[] propertyNames)
    {
    Guard
    <ArgumentNullException>(array == null || propertyNames == null);
    if (propertyNames.Length > 0)
    {
    IEnumerator tor
    = array.GetEnumerator();
    if (tor.MoveNext())
    {
    StringBuilder json
    = new StringBuilder("[{");
    object entity = tor.Current;
    Type type
    = entity.GetType();
    PropertyInfo property;
    foreach (string name in propertyNames)
    {
    property
    = type.GetProperty(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty);
    if (property != null)
    {
    json.Append(property.Name).Append(
    ':');
    AppendJSONValue(json, property, GetPropertyAccess(property).GetValue(entity));
    json.Append(
    ',');
    }
    }
    json.Length
    --;
    json.Append(
    '}');
    while (tor.MoveNext())
    {
    entity
    = tor.Current;
    type
    = entity.GetType();
    json.Append(
    ",{");
    foreach (string name in propertyNames)
    {
    property
    = type.GetProperty(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty);
    if (property != null)
    {
    json.Append(property.Name).Append(
    ':');
    AppendJSONValue(json, property, GetPropertyAccess(property).GetValue(entity));
    json.Append(
    ',');
    }
    }
    json.Length
    --;
    json.Append(
    '}');
    }
    return json.Append("]").ToString();
    }
    }
    return "[]";
    }

    private static void AppendJSONValue(StringBuilder buffer, PropertyInfo property, object value)
    {
    switch (Type.GetTypeCode(property.PropertyType))
    {
    case TypeCode.Boolean:
    buffer.Append(value.ToString().ToLower());
    break;
    case TypeCode.DateTime:
    DateTime time
    = Convert.ToDateTime(value);
    buffer.Append(
    "new Date(")
    .Append(time.Year).Append(
    ',')
    .Append(time.Month
    - 1).Append(',')
    .Append(time.Day).Append(
    ',')
    .Append(time.Hour).Append(
    ',')
    .Append(time.Minute).Append(
    ',')
    .Append(time.Second).Append(
    ')');
    break;
    case TypeCode.String:
    buffer.Append(
    '"').Append(value).Append('"');
    break;
    default:
    buffer.Append(value);
    break;
    }
    }
  • 相关阅读:
    MVC模式的学生信息增删改查
    常用排序算法
    2803 爱丽丝·玛格特罗依德
    3118 高精度练习之除法
    中秋练习题
    poj2011
    P1558 色板游戏
    P1830 轰炸III
    P1656 炸铁路
    1067 机器翻译
  • 原文地址:https://www.cnblogs.com/Googler/p/1955439.html
Copyright © 2011-2022 走看看