////////试题信息/////////////////
// 已知
// h、d两个数组分别表示表头和内容
// 要求
// 编写函数一:rs2Array
// 返回一个数组,每一项为一个对象。
// 编写函数二:rs2MultiHash
// 返回一个对象,内容是键值对。
////////////////////////////////
using System;
using System.Collections.Generic; public class test_02_quiz
{
static void Main(string[] args)
{
List<String> tmp, h = new List<String>();
h.Add("id"); h.Add("name"); h.Add("region");
List<List<String>> d = new List<List<String>>();
tmp = new List<String>();
tmp.Add(""); tmp.Add("wang"); tmp.Add("shanghai");
d.Add(tmp);
tmp = new List<String>();
tmp.Add(""); tmp.Add("huang"); tmp.Add("beijing");
d.Add(tmp);
tmp = new List<String>();
tmp.Add(""); tmp.Add("zhang"); tmp.Add("beijing");
d.Add(tmp);
tmp = new List<String>();
tmp.Add(""); tmp.Add("wang"); tmp.Add("shanghai");
d.Add(tmp); String str1 = rs2Array(h, d);
Console.WriteLine(str1); String str2 = rs2MultiHash(h, d, h[]);
Console.WriteLine(str2);
} /* rs2Array(h, d) 期望结果为:
[
{id: "100", name: "wang", region: "shanghai"},
{id: "101", name: "huang", region: "beijing"},
{id: "102", name: "zhang", region: "beijing"},
{id: "103", name: "li", region: "shanghai"}
]
*/
private static String rs2Array(List<String> h, List<List<String>> d)
{
//return "not implemented";
// 注释上面一句,并请在此实现函数: } /* rs2MultiHash(h, d, h[0]) 期望结果为:
{
"100": [{id: "100", name: "wang", region: "shanghai"}],
"101": [{id: "101", name: "huang", region: "beijing"}],
"102": [{id: "102", name: "zhang", region: "beijing"}],
"103": [{id: "103", name: "li", region: "shanghai"}]
}
*/
/* rs2MultiHash(h, d, h[2]) 期望结果为:
{
"shanghai": [
{id: "100", name: "wang", region: "shanghai"},
{id: "103", name: "li", region: "shanghai"}
],
"beijing": [
{id: "101", name: "huang", region: "beijing"},
{id: "102", name: "zhang", region: "beijing"}
]
}
*/
private static String rs2MultiHash(List<String> h, List<List<String>> d, String key)
{
//return "not implemented";
// 注释上面一句,并请在此实现函数: } // 如果有公共函数需要提取,请在此编写: }

方法代码:

 private static String rs2Array(List<String> h, List<List<String>> d)
{
return JsonConvert.SerializeObject(d.Select(x => middleConvert(h, x)));
} private static String rs2MultiHash(List<String> h, List<List<String>> d, String key)
{
return JsonConvert.SerializeObject(d.Select(x => middleConvert(h, x))
.GroupBy(x => x[key])
.ToDictionary(x => x.Key, x => x.ToArray()));
} private static Dictionary<string, string> middleConvert(List<string> h, List<string> d)
{
return h.ToDictionary(x => x, x => d[h.IndexOf(x)]);
}

C# 数组转json的更多相关文章

  1. iOS 字典或者数组和JSON串的转换

    在和服务器交互过程中,会iOS 字典或者数组和JSON串的转换,具体互换如下: // 将字典或者数组转化为JSON串 + (NSData *)toJSONData:(id)theData { NSEr ...

  2. 使用FastJSON,将对象或数组和JSON串互转

    Fastjson,是阿里巴巴提供的一个Java语言编写的高性能功能完善的JSON库.其开源的下载网址为:https://github.com/AlibabaTech/fastjson. 示例代码如下: ...

  3. javascript里面的数组,json对象,动态添加,修改,删除示例

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  4. JSon_零基础_002_将List类型数组转换为JSon格式的对象字符串,返回给界面

    将List类型数组转换为JSon格式的对象字符串,返回给界面 所需要导入的包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * ...

  5. JSon_零基础_001_将布尔类型数组转换为JSon格式字符串,返回给界面

    将布尔类型数组转换为JSon格式字符串,返回给界面 需要导入包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * 下一步com ...

  6. JQ将数组转换为Json

    var ArrComList; try { //接口传进来的数据格式为 A,B,C,D,这里根据逗号分隔返回数组. ArrComList = WeighControl.GetComList().spl ...

  7. 数据(数组,json)的处理

    有些时候我们在做联动事件以及获取动态的数据是,给到我们的都是数组,json格式的数据. 为了方便快速的处理这些数据,jq给我们提供了很多简便的方法. each()方法 在jQuery里有一个each方 ...

  8. php:数组与json数据相互转换

    1.数组转json $json=json_encode(数组名) 数组转json字符串 2,json转数组 $arr=json_decode(json字符串,[true]) 不加true第一次转直接转 ...

  9. js数组,字符串,json互相转换函数有哪些

    js数组,字符串,json互相转换函数有哪些 一.总结 一句话总结: JSON.stringify(arr) JSON.parse(jsonString) str.split('') array.jo ...

  10. js 数组转json,json转数组

    //数组转json串var arr = [1,2,3, { a : 1 } ];JSON.stringify( arr ); //json字符串转数组var jsonStr = '[1,2,3,{&q ...

随机推荐

  1. Linux系统管理员应该知道的journalctl知识

    在Systemd出现之前,Linux系统及各应用的日志都是分别管理的,Systemd开始统一管理了所有Unit的启动日志,这样带来的好处就是可以只用一个 journalctl命令,查看所有内核和应用的 ...

  2. Js实现页面关键字高亮显示

    <!DOCTYPE HTML> <html lang="en"> <meta http-equiv="Content-Type" ...

  3. 使用 cmake 进行交叉编译

    cmake 因为“又”要额外学一门语言而被诟病,但这并不妨碍越来越多私人项目用 cmake 来管理:autoconfig 确实是更好的发行工具,但用 cmake 管理项目显然更加的容易.如果要应用这些 ...

  4. javascript验证QQ号、邮箱和手机号码

    //验证QQ号码5-11位 function isQQ(qq) { var filter = /^\s*[.0-9]{5,11}\s*$/; if (!filter.test(qq)) { retur ...

  5. 【Android】Android的进程优先级

    android对于所有进程的处理态度都是尽可能不杀死.然而,资源总共就那么多,要是对所有进程都保持宽容的话,资源总会有消耗殆尽的时候.因此,在内存不足的情况,android系统需要根据一定的策略,选择 ...

  6. 物联网架构成长之路(9)-双机热备Keepalived了解

    1. 前言 负载均衡LB,高可用HA,这一小结主要讲双机热备方案保证高可用.这里选择Keepalived作为双机热备方案,下面就对具体的配置进行了解.2. 下载Keepalived wget http ...

  7. HTML5学习笔记(二十八):跨域

    在跨域安全性方面,有多个地方会有限制,主要是XMLHttpRequest对象的跨域限制和iFrame的跨域限制,下面我们分别来看一下. Ajax跨域(CORS) CORS是一个W3C标准,全称是&qu ...

  8. 音视频编解码: YUV采样格式中的YUV444,YUV422,YUV420理解

    YUV各种采样格式的说明 通常我们用RGB表示一种彩色.计算机系统里的LCD显示的数据就是RGB来表示每个像素的颜色.而在我们生活里,有黑白电视机与彩色电视机两种,拍摄节目源时不可以用两种不同的摄像机 ...

  9. 《转》Babel 入门教程

    ECMAScript 6是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2.0.ES6的目标,是使得JavaS ...

  10. vue中全选和取消

    1.效果预览 2.index.html <!DOCTYPE html> <html lang="en"> <head> <meta cha ...