JSON 문자열을 JSON 객체로 변환 C #


161

이 문자열을 데이터베이스에 저장했습니다.

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

이 문자열은 이미 JSON 형식이지만 JObject 또는 JSON Object로 변환하고 싶습니다.

JObject json = new JObject();

나는 json = (JObject)str;캐스트를 시도했지만 작동하지 않아 어떻게 할 수 있습니까?

답변:


298

JObject이에 Parse대한 방법 을 정의 합니다.

JObject json = JObject.Parse(str);

Json.NET 문서 를 참조 할 수 있습니다 .


5
이것은 {string}으로 변환되고 문자열에 중괄호가 추가됩니다.
Vasil Valchev

62

유형이 지정된 개체가 필요하지 않거나 필요하지 않은 경우 다음을 시도하십시오.

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

또는 입력 된 객체를 사용해보십시오.

Foo json  = JsonConvert.DeserializeObject<Foo>(str)

T의 목록이 것 또한 작품은 들어오는 JSON 문자열 컬렉션을 포함하는 경우 : 목록 <푸> JSON = JsonConvert.DeserializeObject <목록 <푸 >> (STR)
A. 바르 마

22

이 작동합니다

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

'JavaScriptSerializer'의 네임 스페이스 : System.Web.Script.Serialization;
BernieSF

확실히 나를 위해 일했습니다. 작은 따옴표로 큰 따옴표를 바꾼 후 JObject를 사용하면 트릭이 발생했습니다. 감사!!!
Carlos Parra

System.Web.Script.Serialization은 .Net 전체 프레임 워크에서만 사용할 수 있습니다.
norgie

7

tradedoubler json 결과를 클래스로 변환하기 위해 며칠 전에 사용했던 매우 강력한 도구를 사용하여 json에 강력한 유형 클래스 기반을 두는 것이 또 다른 목표를 달성하는 흥미로운 방법이 있습니다

간단한 도구입니다 : json 소스 페이스트를 복사 하면 몇 초 안에 강력한 json 지향 클래스가 생깁니다 . 이런 식으로보다 강력하고 사용하기 쉬운 클래스를 사용하게됩니다.

나는 그것이 당신을 도울 수 있기를 바랍니다


내가 필요한 것! 그래서 자바 스크립트에서 생성 된 것에서 복잡한 클래스 구조를 정의 할 필요가 없습니다
NicolasZ

이것은 질문에 대답하지 않습니다. 이것은 엄청난 시간 절약 도구입니다.
Valamas 2012


1

이것은 나를 사용하여 작동합니다. JsonConvert

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

0

JObject의 경우 작동하지 않습니다. 이것은 간단한 json 형식 데이터에서 작동합니다. 아래 json 형식 데이터의 데이터를 형식으로 역 직렬화하려고 시도했지만 응답을 얻지 못했습니다.

이 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"
              }
            ]
          }
        ]
      }
    ]
  }
}

0

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);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.