반응형
C#의 JSON 개체를 통해 반복하고 있습니다.
JSON을 사용하고 있습니다.C#의 NET: Klout API로부터의 응답을 해석합니다.제 대답은 다음과 같습니다.
[
{
"id": "5241585099662481339",
"displayName": "Music",
"name": "music",
"slug": "music",
"imageUrl": "http://kcdn3.klout.com/static/images/music-1333561300502.png"
},
{
"id": "6953585193220490118",
"displayName": "Celebrities",
"name": "celebrities",
"slug": "celebrities",
"imageUrl": "http://kcdn3.klout.com/static/images/topics/celebrities_b32741b6703151cc7bd85fba24c44c52.png"
},
{
"id": "5757029936226020304",
"displayName": "Entertainment",
"name": "entertainment",
"slug": "entertainment",
"imageUrl": "http://kcdn3.klout.com/static/images/topics/Entertainment_7002e5d2316e85a2ff004fafa017ff44.png"
},
{
"id": "3718",
"displayName": "Saturday Night Live",
"name": "saturday night live",
"slug": "saturday-night-live",
"imageUrl": "http://kcdn3.klout.com/static/images/icons/generic-topic.png"
},
{
"id": "8113008320053776960",
"displayName": "Hollywood",
"name": "hollywood",
"slug": "hollywood",
"imageUrl": "http://kcdn3.klout.com/static/images/topics/hollywood_9eccd1f7f83f067cb9aa2b491cd461f3.png"
}
]
보시는 바와 같이 5개입니다.id
태그요. 다음번에는 6이나 1 혹은 다른 번호가 될 수도 있어요.JSON을 반복하여 각각의 가치를 얻고 싶다.id
태그요. 얼마나 많은 수가 있을 지 모르면서 루프를 돌릴 수는 없어요.어떻게 하면 해결할 수 있을까요?
dynamic dynJson = JsonConvert.DeserializeObject(json);
foreach (var item in dynJson)
{
Console.WriteLine("{0} {1} {2} {3}\n", item.id, item.displayName,
item.slug, item.imageUrl);
}
또는
var list = JsonConvert.DeserializeObject<List<MyItem>>(json);
public class MyItem
{
public string id;
public string displayName;
public string name;
public string slug;
public string imageUrl;
}
를 사용할 수 있습니다.JsonTextReader
토큰 상에서 JSON을 읽고 반복하려면:
using (var reader = new JsonTextReader(new StringReader(jsonText)))
{
while (reader.Read())
{
Console.WriteLine("{0} - {1} - {2}",
reader.TokenType, reader.ValueType, reader.Value);
}
}
이 기능을 통해 YAML을 읽기 쉽게 네스트된 JSON으로 변환
string JSONDeserialized {get; set;}
public int indentLevel;
private bool JSONDictionarytoYAML(Dictionary<string, object> dict)
{
bool bSuccess = false;
indentLevel++;
foreach (string strKey in dict.Keys)
{
string strOutput = "".PadLeft(indentLevel * 3) + strKey + ":";
JSONDeserialized+="\r\n" + strOutput;
object o = dict[strKey];
if (o is Dictionary<string, object>)
{
JSONDictionarytoYAML((Dictionary<string, object>)o);
}
else if (o is ArrayList)
{
foreach (object oChild in ((ArrayList)o))
{
if (oChild is string)
{
strOutput = ((string)oChild);
JSONDeserialized += strOutput + ",";
}
else if (oChild is Dictionary<string, object>)
{
JSONDictionarytoYAML((Dictionary<string, object>)oChild);
JSONDeserialized += "\r\n";
}
}
}
else
{
strOutput = o.ToString();
JSONDeserialized += strOutput;
}
}
indentLevel--;
return bSuccess;
}
사용.
Dictionary<string, object> JSONDic = new Dictionary<string, object>();
JavaScriptSerializer js = new JavaScriptSerializer();
try {
JSONDic = js.Deserialize<Dictionary<string, object>>(inString);
JSONDeserialized = "";
indentLevel = 0;
DisplayDictionary(JSONDic);
return JSONDeserialized;
}
catch (Exception)
{
return "Could not parse input JSON string";
}
언급URL : https://stackoverflow.com/questions/11132288/iterating-over-json-object-in-c-sharp
반응형
'programing' 카테고리의 다른 글
jQuery JSON 응답은 항상 ParseError를 트리거합니다. (0) | 2023.03.23 |
---|---|
표의 모든 행을 효율적으로 업데이트하는 방법 (0) | 2023.03.23 |
트위터 공유 URL의 get_the_title() 인코딩 (0) | 2023.03.23 |
각도 지시어에 변수 전달 (0) | 2023.03.23 |
바깥쪽 div 크기가 변경되면 스크롤 가능한 div를 바닥에 고정합니다. (0) | 2023.03.23 |