0

JSONデータをグリッドにバインドするのに苦労しましKendo UIたが、この問題の解決策を探しているときに、他の問題に直面しました。@Petur Subev here で言及されているように、JSON を正しく解析して正しい形式に一致させる方法。

現在の JSON は次の形式です。

//{"No":null,"Desc":"asfasfasfasfasfasfasfasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":null}
//{"No":null,"Desc":"etwetwetwetwet","Date":"2013-03-27T00:00:00","Height":0,"Final":0}

しかし、指摘されているように、次のようにする必要があります。

[{"No":null,"Desc":"asfasfasfasfasfasfasfasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":null},
{"No":null,"Desc":"etwetwetwetwet","Date":"2013-03-27T00:00:00","Height":0,"Final":0},
{"No":null,"Desc":"asfasfasfskfjklajsfkjasklfjklasjfklajsfkljaklsfjklasjfkljasfkljlasf","Date":"2013-03-27T00:00:00","Height":0,"Final":0}]

JSONを作成するためにprebuilt to functionを使用しているため、なぜこのようになっているのかを理解するのは難しいですが、それでも間違っています。

Model Code私が持っている:

public object GetResult(string id)
{
    var sqlCom = new SqlCommand("SELECT [No],[Desc],[Date],[Height],[Final] FROM [cr_form] WHERE [uId]=@id;", sqlConn);
    sqlCom.Parameters.AddWithValue("@id", id);

    StringBuilder sb = new StringBuilder();
    StringWriter sw = new StringWriter(sb);
    JsonWriter jsonWriter = new JsonTextWriter(sw);
    var rcrds = GETSQLRESULTS(sqlCom);

    try
    {
        int i = 0;
        if (rcrds != null || rcrds.HasRows)
        {
            //jsonWriter.WriteStartObject();
            while (rcrds.Read())
            {
                jsonWriter.WriteStartObject(); //Changed
                for (int j = 0; j < rcrds.FieldCount; j++)
                {
                    jsonWriter.WritePropertyName(rcrds.GetName(j)); // column name
                    jsonWriter.WriteValue(rcrds.GetValue(j)); // value in column
                }
                i++;
                jsonWriter.WriteEndObject(); //Changed
            }
            //jsonWriter.WriteEndObject();

        }

    }

    catch (Exception ex) { }
    return jsonWriter;
}

Controller

public ActionResult GetRecords()
{
    var usrObj = new User();
    var jsnRslt = usrObj.GetResult(Session["Id"].ToString());

//After Changes in the Model I am getting it in the required Array format:
//{"No":null,"Desc":"asfasfasfasfasfasfasfasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":null}
//{"No":null,"Desc":"etwetwetwetwet","Date":"2013-03-27T00:00:00","Height":0,"Final":0}
//{"No":null,"Des...

    return Json(jsnRslt, JsonRequestBehavior.AllowGet);            
}

追加後WriteStartArray();

{[{"No":null,"Desc":"asfasfasfasfasfasfasfasfasfasfasfasf","Date":"2013-03-27T00:00:00","Height":0,"Final":null},
{"No":null,"Desc":"etwetwetwetwet","Date":"2013-03-27T00:00:00","Height":0,"Final":0},
{"No":null,"Desc":"asfasfasfskfjklajsfkjasklfjklasjfklajsfkljaklsfjklasjfkljasfkljlasf","Date":"2013-03-27T00:00:00","Height":0,"Final":0},
{"No":null,"Desc":"hdfhdfhdfh","Date":"2013-04-04T00:00:00","Height":1,"Final":0}]}
4

2 に答える 2

1

最初に電話したいだけのようですWriteStartArray...

サンプルコード:

using System;
using Newtonsoft.Json;

class Test
{
    static void Main()
    {
        using (var writer = new JsonTextWriter(Console.Out))
        {
            writer.WriteStartArray();
            for (int i = 0; i < 5; i++)
            {
                writer.WriteStartObject();
                writer.WritePropertyName("Foo");
                writer.WriteValue(i);
                writer.WriteEnd();
            }
            writer.WriteEnd();
        }
    }
}

出力:

[{"Foo":0},{"Foo":1},{"Foo":2},{"Foo":3},{"Foo":4}]
于 2013-04-01T09:26:05.327 に答える