programing

JSON 문자열을 JSON 개체 c#으로 변환

oldcodes 2023. 4. 4. 22:15
반응형

JSON 문자열을 JSON 개체 c#으로 변환

데이터베이스에 다음 문자열이 저장되어 있습니다.

str = "{ "context_name": { "lower_bound": "value", "upper_bound": "value", "values": [ "value1", "valueN" ] } }"

이 문자열은 이미 JSON 형식이지만 JObject 또는 JSON 개체로 변환하려고 합니다.

JObject json = new JObject();

제가 한번 해봤는데json = (JObject)str;캐스팅이 안 됐는데 어떻게 해요?

JObject정의 메서드Parse이 경우:

JObject json = JObject.Parse(str);

Json을 참조하는 것이 좋습니다.NET 문서

입력된 객체를 원하지 않거나 필요한 경우:

using Newtonsoft.Json;
// ...   
dynamic json  = JsonConvert.DeserializeObject(str);

또는 입력된 객체 시도:

using Newtonsoft.Json;

// single    
Foo foo  = JsonConvert.DeserializeObject<Foo>(str);

// or as a list
List<Foo> foos = JsonConvert.DeserializeObject<List<Foo>>(str); 

이것은 동작합니다.

    string str = "{ 'context_name': { 'lower_bound': 'value', 'pper_bound': 'value', 'values': [ 'value1', 'valueN' ] } }";
    JavaScriptSerializer j = new JavaScriptSerializer();
    object a = j.Deserialize(str, typeof(object));

tradoubler json의 결과를 클래스로 변환하기 위해 며칠 전에 처음으로 사용한 매우 강력한 도구로 json을 기반으로 한 강력한 클래스 베이스가 되는 또 다른 목표를 달성하는 흥미로운 방법이 있습니다.

간단한 도구입니다.json 소스 페이스트를 복사하면 몇 초 안에 강력한 유형의 클래스 json 지향 클래스가 생성됩니다.이렇게 하면 보다 강력하고 간단하게 사용할 수 있는 클래스를 사용할 수 있습니다.

다음과 같이 시도할 수 있습니다.

string output = JsonConvert.SerializeObject(jsonStr);

이 방법은JsonConvert

var result = JsonConvert.DeserializeObject<Class>(responseString);

JSon 문자열에 "단일 따옴표 대신 이중 따옴표"가 있고 다음 줄의 표시기로 \n이 있는 경우, 이는 적절한 JSon 문자열이 아니기 때문에 다음과 같이 삭제할 필요가 있습니다.

            SomeClass dna = new SomeClass ();
            string response = wc.DownloadString(url);
            string strRemSlash = response.Replace("\"", "\'");
            string strRemNline = strRemSlash.Replace("\n", " ");
            // Time to desrialize it to convert it into an object class.
            dna = JsonConvert.DeserializeObject<SomeClass>(@strRemNline);

API에서 특정 엔티티의 객체 목록을 가져오는 경우 응답 문자열은 다음과 같습니다.

[{"id":1,"nome":"eeee","username":null,"email":null},{"id":2,"nome":"eeee","username":null,"email":null},{"id":3,"nome":"Ricardo","username":null,"email":null}]

이 상황에서는 Jason 객체의 배열을 반복하여 c# 변수를 채울 수 있습니다.나는 그렇게 했다:

var httpResponse = await Http.GetAsync($"api/{entidadeSelecionada}");
    List<List<string[]>> Valores = new();
    if (httpResponse.IsSuccessStatusCode)
    {
        //totalPagesQuantity = int.Parse(httpResponse.Headers.GetValues("pagesQuantity").FirstOrDefault());
        //Aqui tenho que colocar um try para o caso de ser retornado um objecto vazio
        var responseString = await httpResponse.Content.ReadAsStringAsync();

        JArray array = JArray.Parse(responseString);

        foreach (JObject objx in array.Children<JObject>())
        {
            List<string[]> ls = new();
            foreach (JProperty singleProp in objx.Properties())
            {
                if (!singleProp.Name.Contains("_xyz"))
                {
                    string[] val = new string[2];
                    val[0] = singleProp.Name;
                    val[1] = singleProp.Value.ToString();
                    ls.Add(val);
                }
            }
            Valores.Add(ls);
        }
    }
    return Valores;

저는 @Andrei의 답변으로 이 문제를 해결했습니다.

이것은 JObject의 경우 단순 json 형식 데이터에 대해 작동되지 않습니다.아래의 json 포맷 데이터를 deserialize로 시도했지만 응답이 없었습니다.

이 Json을 위해서

{
  "Customer": {
    "id": "Shell",
    "Installations": [
      {
        "id": "Shell.Bangalore",
        "Stations": [
          {
            "id": "Shell.Bangalore.BTM",
            "Pumps": [
              {
                "id": "Shell.Bangalore.BTM.pump1"
              },
              {
                "id": "Shell.Bangalore.BTM.pump2"
              },
              {
                "id": "Shell.Bangalore.BTM.pump3"
              }
            ]
          },
          {
            "id": "Shell.Bangalore.Madiwala",
            "Pumps": [
              {
                "id": "Shell.Bangalore.Madiwala.pump4"
              },
              {
                "id": "Shell.Bangalore.Madiwala.pump5"
              }
            ]
          }
        ]
      }
    ]
  }
}
string result = await resp.Content.ReadAsStringAsync();
            List<ListView11> _Resp = JsonConvert.DeserializeObject<List<ListView11>>(result);
            //List<ListView11> _objList = new List<ListView11>((IEnumerable<ListView11>)_Resp);

            IList usll = _Resp.Select(a => a.lttsdata).ToList();
            // List<ListViewClass> _objList = new List<ListViewClass>((IEnumerable<ListViewClass>)_Resp);
            //IList usll = _objList.OrderBy(a=> a.ReqID).ToList();
            Lv.ItemsSource = usll;

언급URL : https://stackoverflow.com/questions/22870624/convert-json-string-to-json-object-c-sharp

반응형