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;
    }
    }
  • 相关阅读:
    error:undefined reference to 'net_message_processor::net_message_processor()'
    android 网络检测
    eclipse 安装 ndk 组件
    eclipse下编译cocos2dx 3.0
    Cocos2dx3.0 TextField 输入中文的问题
    记录与骗子进行的一次交锋. 与技术无关
    关于继承的设计
    kubernetes1.5.2--部署dashboard服务
    kubernetes1.5.2--部署DNS服务
    kubernetes1.5.2集群部署过程--安全模式
  • 原文地址:https://www.cnblogs.com/Googler/p/1955439.html
Copyright © 2011-2022 走看看