반응형
    
    
    
  JSON을 사용하여 json 문자열을 해석합니다.그물
C#에는 다음과 같은 문자열이 있습니다.HTML 테이블 출력을 루프스루하여 작성해야 합니다.JSON이랑 같이 해봤어요.NET은 키를 취득하는 방법(이름, 연령 및 작업)을 찾을 수 없었습니다.
string data = "{items:[
{'Name':'AAA','Age':'22','Job':'PPP'}
,{'Name':'BBB','Age':'25','Job':'QQQ'}
,{'Name':'CCC','Age':'38','Job':'RRR'}]}";
 
테이블 형식은 다음과 같습니다.
......................... | 이름 | 연령 | 직업 |......................... | AAA | 22 | PPP |......................... | BBB | 25 | QQ Q |......................... | CCC | 28 | RRR |.........................
어떤 도움이라도 주시면 대단히 감사하겠습니다.
Dave가 제공하는 코드가 이상적인 솔루션입니다.에서는 동작합니다.NET 4.0..저는 JSON과 함께 다음 코드를 사용했습니다.의 NET 입니다.NET 3.5
뉴튼소프트를 사용해서요.Json.Linq;
string jsonString = "{items:[{'Name':'Anz','Age':'29','Job':''},{'Name':'Sanjai','Age':'28','Job':'Developer'},{'Name':'Rajeev','Age':'31','Job':'Designer'}]}";
        JObject root = JObject.Parse(jsonString);
        JArray items = (JArray)root["items"];
        JObject item;
        JToken jtoken;
        for (int i = 0; i < items.Count; i++) //loop through rows
        {
            item = (JObject)items[i];
            jtoken = item.First;
            while (jtoken != null)//loop through columns
            {
                Response.Write(((JProperty)jtoken).Name.ToString() + " : " + ((JProperty)jtoken).Value.ToString() + "<br />");
                jtoken = jtoken.Next;
            }
        }
를 사용할 수 있습니다.이를 위해 NET 4의 동적 유형과 내장된 JavaScriptSerializer를 사용합니다.아마 이런 거겠죠?
string json = "{\"items\":[{\"Name\":\"AAA\",\"Age\":\"22\",\"Job\":\"PPP\"},{\"Name\":\"BBB\",\"Age\":\"25\",\"Job\":\"QQQ\"},{\"Name\":\"CCC\",\"Age\":\"38\",\"Job\":\"RRR\"}]}";
var jss = new JavaScriptSerializer();
dynamic data = jss.Deserialize<dynamic>(json);
StringBuilder sb = new StringBuilder();
sb.Append("<table>\n  <thead>\n    <tr>\n");
// Build the header based on the keys in the
//  first data item.
foreach (string key in data["items"][0].Keys) {
        sb.AppendFormat("      <th>{0}</th>\n", key);
}
sb.Append("    </tr>\n  </thead>\n  <tbody>\n");
foreach (Dictionary<string, object> item in data["items"]) {
    sb.Append("    <tr>\n");
    foreach (string val in item.Values) {
        sb.AppendFormat("      <td>{0}</td>\n", val);
    }
}
sb.Append("    </tr>\n  </tbody>\n</table>");
string myTable = sb.ToString();
 
마지막에는myTable는 다음과 같은 문자열을 유지합니다.
<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Age</th>
            <th>Job</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>AAA</td>
            <td>22</td>
            <td>PPP</td>
        <tr>
            <td>BBB</td>
            <td>25</td>
            <td>QQQ</td>
        <tr>
            <td>CCC</td>
            <td>38</td>
            <td>RRR</td>
        </tr>
    </tbody>
</table>
다음 단편은 테스트하지 않았습니다...올바른 방향으로 안내할 수 있기를 바랍니다.
    var jsreader = new JsonTextReader(new StringReader(stringData));
    var json = (JObject)new JsonSerializer().Deserialize(jsreader);
    var tableRows = from p in json["items"]
                 select new
                 {
                     Name = (string)p["Name"],
                     Age = (int)p["Age"],
                     Job = (string)p["Job"]
                 };
키가 동적이라면 DataTable로 직접 역직렬화하는 것이 좋습니다.
    class SampleData
    {
        [JsonProperty(PropertyName = "items")]
        public System.Data.DataTable Items { get; set; }
    }
    public void DerializeTable()
    {
        const string json = @"{items:["
            + @"{""Name"":""AAA"",""Age"":""22"",""Job"":""PPP""},"
            + @"{""Name"":""BBB"",""Age"":""25"",""Job"":""QQQ""},"
            + @"{""Name"":""CCC"",""Age"":""38"",""Job"":""RRR""}]}";
        var sampleData = JsonConvert.DeserializeObject<SampleData>(json);
        var table = sampleData.Items;
        // write tab delimited table without knowing column names
        var line = string.Empty;
        foreach (DataColumn column in table.Columns)            
            line += column.ColumnName + "\t";                       
        Console.WriteLine(line);
        foreach (DataRow row in table.Rows)
        {
            line = string.Empty;
            foreach (DataColumn column in table.Columns)                
                line += row[column] + "\t";                                   
            Console.WriteLine(line);
        }
        // Name   Age   Job    
        // AAA    22    PPP    
        // BBB    25    QQQ    
        // CCC    38    RRR    
    }
 
역직렬화되면 DataTable 열 이름과 유형을 동적으로 결정할 수 있습니다.
언급URL : https://stackoverflow.com/questions/6244149/parse-json-string-using-json-net
반응형
    
    
    
  'programing' 카테고리의 다른 글
| 쉼표로 구분된 문자열을 PL/SQL에서 배열로 변환 (0) | 2023.04.01 | 
|---|---|
| Wordpress 다중 사이트용 캐디 구성 (0) | 2023.03.22 | 
| tsconfig.json 파일을 생성하려면 어떻게 해야 합니까? (0) | 2023.03.22 | 
| AngularJS가 숨겨진 필드 값을 전송하지 않음 (0) | 2023.03.22 | 
| Oracle에서 인덱스 및 테이블 소유자에 대한 정보를 얻으려면 어떻게 해야 합니까? (0) | 2023.03.22 |