首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在asp.net MVC 3中解析JSON输出

在asp.net MVC 3中解析JSON输出
EN

Stack Overflow用户
提问于 2015-08-20 06:30:30
回答 3查看 2.2K关注 0票数 0

我想在C# asp.net mVC3中解析JSON字符串,但不知道如何解析json字符串。我的JSON字符串是这样的:

代码语言:javascript
复制
{"dept":"HR","data":[{"height":5.5,"weight":55.5},{"height":5.4,"weight":59.5},{"height":5.3,"weight":67.7},{"height":5.1,"weight":45.5}]}

代码:

代码语言:javascript
复制
var allData = { dept: deptname, data: arr};
var allDataJson = JSON.stringify(allData);
$.ajax({
                url: '<%=Url.Action("funx","Controller")%>',
                data: { DJson: allDataJson },
                async: false,
                cache: false,
                type: 'POST',
                success: function (data) {
                    alert("success data: "+data);
                }

}); 

public String funx(string DJson)
{
     System.Diagnostics.Debug.WriteLine("Returned Json String:" + DJson);

     // var yourObject = new JavaScriptSerializer().Deserialize(DJson);
     return "successfull";
}

我是asp.net的新手。我想解析该字符串并将其保存在数据库中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-20 06:42:55

首先,为json创建一个模型。

代码语言:javascript
复制
public class Size
{
    public double height { get; set; }
    public double weight { get; set; }
}

public class MyData
{
    public string dept { get; set; }
    public List<Size> data { get; set; }
}

现在您可以反序列化您的json。内置DataContractJsonSerializer

代码语言:javascript
复制
var serializer = new DataContractJsonSerializer(typeof(MyData));
var data = (MyData)serializer.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(json)));

或使用Json.Net

代码语言:javascript
复制
var data = JsonConvert.DeserializeObject<MyData>(json);

您甚至可以使用dynamic方式,而无需创建任何类。

代码语言:javascript
复制
dynamic dynObj = JsonConvert.DeserializeObject(json);

foreach(var item in dynObj.data)
{
    Console.WriteLine("{0} {1}", item.height, item.weight);
}
票数 0
EN

Stack Overflow用户

发布于 2015-08-20 06:42:13

方法1:

使用JSON字符串的结构创建两个类:

代码语言:javascript
复制
public class myobj
{
    public string dept;
    public IEnumerable<mydata>;
}

public class mydata
{
    public int weight;
    public int height;
}

在此之后,使用这个来解析它:

代码语言:javascript
复制
public static T FromJSON<T>(string str)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    return serializer.Deserialize<T>(str);
}

如下所示:

代码语言:javascript
复制
myobj obj = MP3_SIOP_LT.Code.Helpers.JSONHelper.FromJSON<myobj>(@"{""dept"":""HR"",""data"":[{""height"":5.5,""weight"":55.5},{""height"":5.4,""weight"":59.5},{""height"":5.3,""weight"":67.7},{""height"":5.1,""weight"":45.5}]}");

结果:

方法2:

如果您不想拥有带有JSON结构的类,请使用与上面类似的方法,但是为了获得一个dynamic对象:

代码语言:javascript
复制
dynamic obj = MP3_SIOP_LT.Code.Helpers.JSONHelper.FromJSON<dynamic>(@"{""dept"":""HR"",""data"":[{""height"":5.5,""weight"":55.5},{""height"":5.4,""weight"":59.5},{""height"":5.3,""weight"":67.7},{""height"":5.1,""weight"":45.5}]}");

结果:

票数 1
EN

Stack Overflow用户

发布于 2015-08-20 06:43:39

您可以使用NewtonSoft Json.Net进行解析。

尝尝这个

代码语言:javascript
复制
var json = "{\"dept\":\"HR\",\"data\":[{\"height\":5.5,\"weight\":55.5},{\"height\":5.4,\"weight\":59.5},{\"height\":5.3,\"weight\":67.7},{\"height\":5.1,\"weight\":45.5}]}";
var foo = JsonConvert.DeserializeObject<RootObject>(json);

// Check Values
// var department = foo.dept;
// foreach (var item in foo.data)
// {
//      var height = item.height;
//      var weight = item.weight;
// }

public class Datum
{
    public double height { get; set; }
    public double weight { get; set; }
}

public class RootObject
{
    public string dept { get; set; }
    public List<Datum> data { get; set; }
}

Nuget:Json.Net

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32111018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档