홈>
직렬화 할 json 파일의 구조는 다음과 같습니다.
{
"id" : "1lad07",
"text" : "test",
"url" : "http:\/\/twitpic.com\/1lacuz",
"width" : 220,
"height" : 84,
"size" : 8722,
"type" : "png",
"timestamp" : "Wed, 05 May 2010 16:11:48 +0000",
"user" : {
"id" : 12345,
"screen_name" : "twitpicuser"
}
}
JavaScriptSerializer의 속성으로 파일 이름을 가진 클래스를 만들었습니다. json을 직렬화 해제하는 데 사용할 코드는 다음과 같습니다.
using (var reader = new StreamReader(twitpicResponse.GetResponseStream())) {
var responseBody = reader.ReadToEnd();
var deserializer = new JavaScriptSerializer();
var results = deserializer.Deserialize<Response>(responseBody);
}
제 문제는 json 파일에서 사용자 필드를 읽는 방법입니다. 아래와 같습니다;
"user" : {
"id" : 12345,
"screen_name" : "twitpicuser"
}
하위 속성과 값이 있습니다. 응답 클래스에서 어떻게 이름을 지정할 수 있습니까? 내 응답 클래스는 이제 다음과 같습니다.
public class Response {
public string id { get; set; }
public string text { get; set; }
public string url { get; set; }
public string width { get; set; }
public string height { get; set; }
public string size { get; set; }
public string type { get; set; }
public string timestamp { get; set; }
}
가장 좋은 경우는 무엇입니까?
- 답변 # 1
- 답변 # 2
다른 클래스를 만들고 싶지 않다면, deserializer는 항상 다음과 같이 키-값 쌍의 사전을 제공 할 수 있습니다 :
string s = //{ "user" : { "id" : 12345, "screen_name" : "twitpicuser"}}; var serializer = new JavaScriptSerializer(); var result = serializer.DeserializeObject(s);
할 수있는 일을 되 찾을 수 있습니다 :
var userId = int.Parse(result["user"]["id"]); // or (int)result["user"]["id"] depending on how the JSON is serialized. // etc.
와이즈 비츠를보십시오 디버거에서 볼 수있는 내용이 있습니다.
- 답변 # 3
.Net 4+의 경우 :
result
samplejson.aspx
string s = "{ \"user\" : { \"id\" : 12345, \"screen_name\" : \"twitpicuser\"}}"; var serializer = new JavaScriptSerializer(); dynamic usr = serializer.DeserializeObject(s); var UserId = usr["user"]["id"];
2 단계 JSON의 경우 :
sample2.aspx
<%@ Page Language="C#" %> <%@ Import Namespace="System.Globalization" %> <%@ Import Namespace="System.Web.Script.Serialization" %> <%@ Import Namespace="System.Collections.Generic" %> <% string s = "{ \"id\" : 12345, \"screen_name\" : \"twitpicuser\"}"; var serializer = new JavaScriptSerializer(); Dictionary<string, object> result = (serializer.DeserializeObject(s) as Dictionary<string, object>); var UserId = result["id"]; %> <%=UserId %>
- 답변 # 4
다음과 같이 id 필드와 screen_name 필드를 사용하여 하위 클래스 사용자를 만듭니다.
<%@ Page Language="C#" %> <%@ Import Namespace="System.Globalization" %> <%@ Import Namespace="System.Web.Script.Serialization" %> <%@ Import Namespace="System.Collections.Generic" %> <% string s = "{ \"user\" : { \"id\" : 12345, \"screen_name\" : \"twitpicuser\"}}"; var serializer = new JavaScriptSerializer(); Dictionary<string, object> result = (serializer.DeserializeObject(s) as Dictionary<string, object>); Dictionary<string, object> usr = (result["user"] as Dictionary<string, object>); var UserId = usr["id"]; %> <%= UserId %>
- 답변 # 5
public class User { public string id { get; set; } public string screen_name { get; set; } } public class Response { public string id { get; set; } public string text { get; set; } public string url { get; set; } public string width { get; set; } public string height { get; set; } public string size { get; set; } public string type { get; set; } public string timestamp { get; set; } public User user { get; set; } }
public class User : List<UserData> { public int id { get; set; } public string screen_name { get; set; } } string json = client.DownloadString(url); JavaScriptSerializer serializer = new JavaScriptSerializer(); var Data = serializer.Deserialize<List<UserData>>(json);
관련 자료
- linux - 텍스트 파일의 데이터로 JSON 파일의 목록 업데이트
- json.net - C #으로 json 파일의 속성 업데이트
- 파일이있는 Python For 루프
- c - 파일에 움라우트가있는 y
- PHP로 JSON 배열 만들기
- node.js - React로 PDF 파일 열기
- r - 여러 구분 기호가있는 txt 파일 읽기
- apache kafka - nifi - 중첩 json 파일을 csv로 변환
- Python - 파이썬 - 파일에 json 데이터 쓰기
- java - 알 수없는 키로 json 구문 분석
- python - npz 파일이있는 폴더를 하나의 npz로 변환
- 자바에서 JSON 파일을 읽을 수 없습니다
- vue.js - vuex 스토어에서 JSON 데이터를 사용하는 방법 (웹팩 없음)
- c# - MVC에서 JSON 객체 및 파일 검색
- java - JOOQ JSON 바인딩 관련 문제
- text - txt 파일의 줄을 배치로 바꾸기
- java - JavaFX로 mp3 파일을 재생할 수 없습니다
- jmeter - 조건이있는 JSON 어설 션
- php - CURL과 함께 JSON을 통해 변수 전달
- 파이썬으로 JSON 데이터를 읽는 방법
관련 질문
- c# : 역 직렬화 된 개체의 모든 값이 Null로 설정 됨
- c# : System.Text.Json을 사용한보다 효율적인 다형성 역 직렬화
- c# : IEnumerable JSON 응답 오류 시도
- c# : 스트림에서 JSON을 역 직렬화하면 null 개체가 발생합니다.
- c# : 바인딩 json Asp.net Webapi
- c# : 잘못된 속성 식별자 문자 :‘. json 문자열을 객체로 구문 분석 할 때 경로 '', 줄 1, 위치 1
- c# : Xamarin에서 두 개의 동일한 이름의 json 데이터를 어떻게 읽을 수 있습니까?
- c# REST API에 JSON 데이터 게시
- c#의 결과 집합에서 문자열을 제거하는 방법
- java : kotlin 데이터 클래스에 대한 Jackson @JsonProperty 주석 사용
<올>
응답 클래스
User
와 같이 사용자 값을 보유하는 클래스를 작성해야합니다. .사용자 값
User
의 새 클래스 유형으로 응답 클래스 'user'에 특성을 추가하십시오. .일반적으로 json과 CLR 클래스의 속성 유형이 일치하는지 확인해야합니다.역 직렬화하려는 구조에 여러 숫자 값이 포함되어있는 것 같습니다 (대부분
int
). 나는JavaScriptSerializer
인지 확실하지 않습니다 숫자를 문자열 필드에 자동으로 역 직렬화 할 수 있지만 가능한 한 실제 데이터에 최대한 가깝게 CLR 유형을 일치시켜야합니다.