C# 我新建一个主控台测试,想把json转换成数组类型,要怎么转换呢?

string str1 = "{'head':{'srcBillNo':'1001','bizDate':'2013-12-17','custNo':'c001','deptNo':'d001'},'entry':[{'srcEntryNo':'1','whNo':'w001','materialNo':'m001','unitNo':'u001','qty':'100' ,'urrencyNo':'RMB' ,'price':'2.5' ,'amt':'250' ,'taxRate':'0'},{'srcEntryNo':'2','whNo':'w001','materialNo':'m002','unitNo':'u001','qty':'30' ,'currencyNo':'RMB' ,'price':'2.5' ,'amt':'75' ,'taxRate':'0'}]}";
以上是json 我 要是把 entry 放到一个数组里面,把head放到另一个数组里面。我说明一下是c#主控台程序哦,不是前台的js哦。
我就想变成的效果是:'1001','2013-12-17','c001','d001' (这是head数组)
'1','w001','m001','u001','100' ,'RMB' ,'2.5' ,'250' ,'0
'2','w002','m002','u002','100' ,'RMB' ,'2.5' ,'250' ,'0(这是entry数组)
怎么弄啊?诚心请教。
也可以转换成list,看到很多转换的list,但是我用不成功啊。

解析json有很多方法,我随便找了一个LitJSON,代码如下,DLL见附件

static void Main(string[] args)
{
    string str = "{'head':{'srcBillNo':'1001','bizDate':'2013-12-17','custNo':'c001','deptNo':'d001'},'entry':[{'srcEntryNo':'1','whNo':'w001','materialNo':'m001','unitNo':'u001','qty':'100' ,'urrencyNo':'RMB' ,'price':'2.5' ,'amt':'250' ,'taxRate':'0'},{'srcEntryNo':'2','whNo':'w001','materialNo':'m002','unitNo':'u001','qty':'30' ,'currencyNo':'RMB' ,'price':'2.5' ,'amt':'75' ,'taxRate':'0'}]}";
    JsonData jd = JsonMapper.ToObject(str);
    JsonData jdItems = jd["head"];
    List<string> list = new List<string>();
    for (int i = 0; i < jdItems.Count; i++)
        list.Add(jdItems[i].ToString());
    //head数组
    string[] head = list.ToArray();
    list.Clear();
    //entry
    List<string[]> list2 = new List<string[]>();
    jdItems = jd["entry"];
    foreach (JsonData item in jdItems)
    {
        for (int i = 0; i < item.Count; i++)
            list.Add(item[i].ToString());
        list2.Add(list.ToArray());
        list.Clear();
    }
    //此处list2即为Entry 
    //显示结果
    Console.WriteLine("Head:");
    foreach (string s in head)
        Console.Write(s + ",");
    Console.WriteLine("\r\nEntry:");
    foreach (string[] s in list2)
    {
        foreach (string ss in s)
            Console.Write(ss + ",");
        Console.WriteLine();
    }
    Console.ReadKey();
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-08
基本的思想是:首先你建立一个类,结构和json里的结构一样,有head,entry等等,然后用序列化和反序列化来做。
给你两个例子吧,
例子1:
class Test {

String test;

String getTest() { return test; }
String setTest(String test) { test = test; }

}
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
Test routes_list =
(Test)json_serializer.DeserializeObject("{ \"test\":\"some data\" }");

例子2:
var json_serializer = new JavaScriptSerializer();
var routes_list = (IDictionary<string, object>)json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
Console.WriteLine(routes_list["test"]);
相似回答