• 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;
    }
    }
  • 相关阅读:
    Vue异步数据交互 promise axios async fetch
    JS数组或对象转为JSON字符换 JavaScript JSON.stringify()
    JS返回数组的最大值与最小值
    Error: Cannot find module './application'
    Express框架
    NodeJS项目制作流程
    模板引擎art-template
    基于NodeJS的网络响应原理与HTTP协议
    leetcode 953. 验证外星语词典 做题笔记
    leetcode 771. 宝石与石头 做题笔记
  • 原文地址:https://www.cnblogs.com/Googler/p/1955439.html
Copyright © 2020-2023  润新知