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;
    }
    }
  • 相关阅读:
    linux nat路由设置
    [auv] 模拟呼叫
    Sqlserver 导出insert插入语句
    函数name属性
    学习前端,应该选择哪些书籍来看?(转)
    JavaScript继承学习笔记
    Web响应式网站
    Javascript 异步加载详解(转)
    使用 nodeinspector 调试 Node.js
    用 JavaScript 检测 CPU 占比(转)
  • 原文地址:https://www.cnblogs.com/Googler/p/1955439.html
Copyright © 2011-2022 走看看