5

我有一个像这样的 Json 字符串,我想将它加载到 C# 数组中。当我尝试这样做时,我得到了异常

我的字符串:

 {
"customerInformation":
[
  {
     "customerId":"123",
     "CustomerName":"",
     "Age":39,
     "Gender":"Male",
     "StudyInfo":[
        {
           "Modality":"XRAY",
           "StudyName":"Test Name",
           "ModalityId":"1",
           "StudyID":"10923",
           "visitid":41549113,
           "billingId":"456",
           "RegDate":"mm/dd/yyyy",
           "uploaded":"1",
           "groupid":"1"

        },
        {
           "Modality":"XRAY",
           "StudyName":"CT Test Name",
           "ModalityId":"1",
           "StudyID":"10924",
           "visitid":41549113,
           "billingId":"459",
           "RegDate":"mm/dd/yyyy",
           "uploaded":"1",
           "groupid":"1"

        }
     ]
  },

  {
     "customerId":"928",
     "CustomerName":"",
     "Age":49,
     "Gender":"FeMale",
     "StudyInfo":[
        {
           "Modality":"XRAY",
           "StudyName":"Test Name",
           "ModalityId":"1",
           "StudyID":"10923",
           "visitid":41549113,
           "billingId":"456",
           "RegDate":"mm/dd/yyyy",
           "uploaded":"1",
           "groupid":"1"
        },
        {
           "Modality":"XRAY",
           "StudyName":"CT Test Name",
           "ModalityId":"1",
           "StudyID":"10924",
           "visitid":41549113,
           "billingId":"459",
           "RegDate":"mm/dd/yyyy",
           "uploaded":"1",
           "groupid":"1"
        }
     ]
  }

]

 }

我的代码:

public class Attributes
{


    public string[] customerId { get; set; }
    public string[] CustomerName { get; set; }
    public string[] Age { get; set; }
    public string[] Gender { get; set; }
    public string[] StudyInfo { get; set; }
    public string[] Modality { get; set; }
    public string[] StudyName { get; set; }
    public string[] ModalityId { get; set; }
    public string[] StudyID { get; set; }
    public string[] visitid { get; set; }
    public string[] billingId { get; set; }
    public string[] RegDate { get; set; }
    public string[] uploaded { get; set; }
}

public class DataJsonAttributeContainer
{
    public List<Attributes> attributes { get; set; }
}

 public static T DeserializeFromJson<T>(string json)
    {
        T deserializedProduct = JsonConvert.DeserializeObject<T>(json);
       return deserializedProduct;
    }

   public void testing()
    {
  var container = DeserializeFromJson<DataJsonAttributeContainer>(JsonString);

    }

“这返回 Null”

我也试过这个

            JArray jArray = (JArray)JsonConvert.DeserializeObject(JsonStr);
            dynamic dynObj1 = jArray.OrderByDescending(x => x["customerId"]);

两个案例都失败了......如何加载这个..我正在使用 Newtonsoft.Json Dll

4

2 回答 2

7

你生成对象的方式是错误的,应该是这样的:

public class StudyInfo
{
    public string Modality { get; set; }
    public string StudyName { get; set; }
    public string ModalityId { get; set; }
    public string StudyID { get; set; }
    public int visitid { get; set; }
    public string billingId { get; set; }
    public string RegDate { get; set; }
    public string uploaded { get; set; }
    public string groupid { get; set; }
}

public class CustomerInformation
{
    public string customerId { get; set; }
    public string CustomerName { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }
    public List<StudyInfo> StudyInfo { get; set; }
}

public class RootObject
{
    public List<CustomerInformation> customerInformation { get; set; }
}

顺便说一句,你可以试试json2charp,对于这样的东西,它非常棒。

于 2013-07-05T05:24:31.597 回答
1

用户2552410!

也许你需要改变你的班级结构。您可以使用 List<>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConsoleApplication2.TestService;
using Newtonsoft.Json;

namespace ConsoleApplication2
{
    public class Customer
    {
        public string customerId { get; set; }
        public string CustomerName { get; set; }
        public string Age { get; set; }
        public string Gender { get; set; }
        public StudyInfoType[] StudyInfo { get; set; }
        public string visited { get; set; }
        public string billingId { get; set; }
        public string RegDate { get; set; }
        public string uploaded { get; set; }
    }

    public class StudyInfoType
    {
           string Modality {get; set;}
           string StudyName {get; set;}
           string ModalityId {get; set;}
           string StudyID {get; set;}
           string visitid {get; set;}
           string billingId {get; set;}
           string RegDate {get; set;}
           string uploaded {get; set;}
           string groupid { get; set; }
    }


    class Program
    {
        static void Main()
        {
            var temp = CustomerInfo(@"[{ 'customerId':'123', 'CustomerName':'', 'Age':39,'Gender':'Male','StudyInfo':[{'Modality':'XRAY','StudyName':'Test Name','ModalityId':'1','StudyID':'10923','visitid':41549113,'billingId':'456','RegDate':'mm/dd/yyyy','uploaded':'1','groupid':'1'},{'Modality':'XRAY','StudyName':'CT Test Name','ModalityId':'1','StudyID':'10924','visitid':41549113,'billingId':'459','RegDate':'mm/dd/yyyy','uploaded':'1','groupid':'1'}]},{'customerId':'928','CustomerName':'','Age':49,'Gender':'FeMale','StudyInfo':[{'Modality':'XRAY','StudyName':'Test Name','ModalityId':'1','StudyID':'10923','visitid':41549113,'billingId':'456','RegDate':'mm/dd/yyyy','uploaded':'1','groupid':'1'},{ 'Modality':'XRAY','StudyName':'CT Test Name','ModalityId':'1','StudyID':'10924','visitid':41549113,'billingId':'459','RegDate':'mm/dd/yyyy','uploaded':'1','groupid':'1' } ] } ]");
        }

        public static List<Customer> CustomerInfo(string json)
        {
            var n = JsonConvert.DeserializeObject(json, new JsonSerializerSettings
            {
                ObjectCreationHandling = ObjectCreationHandling.Replace
            });
            return JsonConvert.DeserializeObject<List<Customer>>(json);
        }
    }
}
于 2013-07-05T05:50:44.160 回答