相关疑难解决方法(0)

如何用C#解析JSON?

我有以下代码:

var user = (Dictionary<string, object>)serializer.DeserializeObject(responsecontent);
Run Code Online (Sandbox Code Playgroud)

输入responsecontent是JSON,但未正确解析为对象.我应该如何正确地反序列化它?

c# json json.net deserialization

424
推荐指数
12
解决办法
103万
查看次数

使用Json.net将json对象反序列化为动态对象

是否可以使用json.net从json反序列化返回动态对象?我想做这样的事情:

dynamic jsonResponse = JsonConvert.Deserialize(json);
Console.WriteLine(jsonResponse.message);
Run Code Online (Sandbox Code Playgroud)

.net c# json.net

411
推荐指数
8
解决办法
34万
查看次数

C#4.0中使用的"动态"类型是什么?

C#4.0引入了一种名为"dynamic"的新类型.这听起来不错,但程序员会用它做什么?

有没有可以节省一天的情况?

.net c# dynamic c#-4.0

218
推荐指数
5
解决办法
14万
查看次数

将JSON字符串转换为C#对象

尝试将JSON字符串转换为C#中的对象.使用一个非常简单的测试用例:

JavaScriptSerializer json_serializer = new JavaScriptSerializer();
object routes_list = json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
Run Code Online (Sandbox Code Playgroud)

问题是routes_list永远不会被设置; 这是一个未定义的对象.有任何想法吗?

c# json

174
推荐指数
11
解决办法
58万
查看次数

我在哪里可以找到System.Web.Helpers,System.Web.WebPages和System.Web.Razor?

我正在关注RazorGenerator上的这篇文章,它说我必须添加对以下内容的引用:

  • System.Web.Helpers.dll
  • System.Web.WebPages.dll
  • System.Web.Razor.dll

我唯一能看到的Add Reference就是System.Web.Razor,但我不知道其他的在哪里.

c# visual-studio-2010 razor razorgenerator

81
推荐指数
9
解决办法
14万
查看次数

JObject.Parse与JsonConvert.DeserializeObject

JsonConvert.DeserializeObject和JObject.Parse有什么区别?据我所知,两者都是一个字符串,并在Json.NET库中.什么样的情况会使一个人比另一个人更方便,还是主要只是偏好?

作为参考,这里有一个例子,我用两者做同样的事情 - 解析一个Json字符串并返回一个Json属性的列表.

public ActionResult ReadJson()
{
    string countiesJson = "{'Everything':[{'county_name':null,'description':null,'feat_class':'Civil','feature_id':'36865',"
                    +"'fips_class':'H1','fips_county_cd':'1','full_county_name':null,'link_title':null,'url':'http://www.alachuacounty.us/','name':'Alachua County'"+ ",'primary_latitude':'29.7','primary_longitude':'-82.33','state_abbreviation':'FL','state_name':'Florida'},"+
                    "{'county_name':null,'description':null,"+ "'feat_class':'Civil','feature_id':'36866','fips_class':'H1','fips_county_cd':'3','full_county_name':null,'link_title':null,'url':'http://www.bakercountyfl.org/','name':'Baker County','primary_latitude':'30.33','primary_longitude':'-82.29','state_abbreviation':'FL','state_name':'Florida'}]}";

    //Can use either JSONParseObject or JSONParseDynamic here
    List<string> counties = JSONParseObject(countiesJson);
    JSONParseDynamic(countiesJson);
    return View(counties);
}

public List<string> JSONParseObject(string jsonText)
{
    JObject jResults = JObject.Parse(jsonText);
    List<string> counties = new List<string>();
    foreach (var county in jResults["Everything"])
    {
        counties.Add((string)county["name"]);
    }
    return counties;
}

public List<string> JSONParseDynamic(string jsonText)
{
    dynamic jResults = JsonConvert.DeserializeObject(jsonText);
    List<string> counties = new List<string>();
    foreach(var county in jResults.Everything)
    {
        counties.Add((string)county.name);
    }
    return …
Run Code Online (Sandbox Code Playgroud)

c# jsonserializer json.net

73
推荐指数
2
解决办法
5万
查看次数

从字符串中获取C#动态对象的属性值(反射?)

假设我有一个动态变量:

dynamic d = *something*
Run Code Online (Sandbox Code Playgroud)

现在,有些东西d从字符串数组中创建了我拥有的属性:

string[] strarray = { 'property1','property2',..... }
Run Code Online (Sandbox Code Playgroud)

我事先不知道房产名称.

如何在代码d中创建一次并从数据库中提取strarray,我可以获取值吗?

我想得到d.property1 , d.property2.

我看到该对象有一个_dictionary包含键和值的内部字典,如何检索它们?

c# reflection .net-4.0

68
推荐指数
6
解决办法
17万
查看次数

MVC控制器:从HTTP主体获取JSON对象?

我们有一个MVC(MVC4)应用程序,有时可能会将第三方发布的JSON事件发送到我们的特定URL(" http://server.com/events/ ").JSON事件位于HTTP POST的主体中,正文是严格的JSON(Content-Type: application/json- 不是某些字符串字段中带有JSON的表单).

如何在控制器的主体内接收JSON主体?我尝试了以下但没有得到任何东西

[编辑]:当我说没有得到任何东西时,我的意思是jsonBody始终为null,无论我是将其定义为Objectstring.

[HttpPost]
// this maps to http://server.com/events/
// why is jsonBody always null ?!
public ActionResult Index(int? id, string jsonBody)
{
    // Do stuff here
}
Run Code Online (Sandbox Code Playgroud)

请注意,我知道如果我使用强类型输入参数声明方法,MVC会进行整个解析和过滤,即

// this tested to work, jsonBody has valid json data 
// that I can deserialize using JSON.net
public ActionResult Index(int? id, ClassType847 jsonBody) { ... }
Run Code Online (Sandbox Code Playgroud)

但是,我们获得的JSON非常多样,因此我们不希望为每个JSON变体定义(和维护)数百个不同的类.

我正在通过以下curl命令测试它(这里有一个JSON的变体)

curl -i -H "Host: localhost" -H "Content-Type: …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc post json

64
推荐指数
2
解决办法
10万
查看次数

以"TryParse"方式反序列化json

当我向服务发送请求(我不拥有)时,它可能会响应请求的JSON数据,或者出现如下错误:

{
    "error": {
        "status": "error message",
        "code": "999"
    }
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,HTTP响应代码都是200 OK,所以我不能用它来确定是否有错误 - 我必须反序列化要检查的响应.所以我有一些看起来像这样的东西:

bool TryParseResponseToError(string jsonResponse, out Error error)
{
    // Check expected error keywords presence
    // before try clause to avoid catch performance drawbacks
    if (jsonResponse.Contains("error") &&
        jsonResponse.Contains("status") &&
        jsonResponse.Contains("code"))
    {
        try
        {
            error = new JsonSerializer<Error>().DeserializeFromString(jsonResponse);
            return true;
        }
        catch
        {
            // The JSON response seemed to be an error, but failed to deserialize.
            // Or, it may be a successful JSON response: do nothing.
        } …
Run Code Online (Sandbox Code Playgroud)

.net c# json

56
推荐指数
4
解决办法
5万
查看次数

将JSON反序列化为匿名对象

在C#中,我已经使用这样的代码成功地将匿名对象序列化为JSON ...

var obj = new { Amount = 108, Message = "Hello" };
JavaScriptSerializer serializer = new JavaScriptSerializer();
String output = serializer.Serialize(obj);
Run Code Online (Sandbox Code Playgroud)

但是,我希望以后能够将JSON字符串反序列化为匿名对象.像这样......

var obj2 = serializer.Deserialize(output, object);
Run Code Online (Sandbox Code Playgroud)

但是serializer.Deserialize()方法需要第二个参数,它是要反序列化的对象类型.

我试过这个......

var obj2 = serializer.Deserialize(output, obj.GetType());
Run Code Online (Sandbox Code Playgroud)

但这会产生错误:

没有为'<> f__AnonymousType0`2 [[System.Int32,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.String,mscorlib,Version = 4.0.0.0,Culture]的类型定义无参数构造函数=中立,PublicKeyToken = b77a5c561934e089]]'.

我不确定这个错误意味着什么.

c# asp.net json

41
推荐指数
4
解决办法
6万
查看次数