Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq查询作业对象_C#_Json_Linq_Asp.net Mvc 4_Json.net - Fatal编程技术网

C# Linq查询作业对象

C# Linq查询作业对象,c#,json,linq,asp.net-mvc-4,json.net,C#,Json,Linq,Asp.net Mvc 4,Json.net,我使用Json.net进行序列化,然后制作一个JObject,如下所示: "RegistrationList": [ { "CaseNumber": "120654-1330", "Priority": 5, "PersonId": 7, "Person": { "FirstName": "", "LastName": "", }, "UserId": 7, "User"

我使用Json.net进行序列化,然后制作一个JObject,如下所示:

 "RegistrationList": [
    {
      "CaseNumber": "120654-1330",
      "Priority": 5,
      "PersonId": 7,
      "Person": {
        "FirstName": "",
        "LastName": "",
      },
      "UserId": 7,
      "User": {
        "Id": 7,
        "CreatedTime": "2013-07-05T13:09:57.87",
        "Comment": "",
    },
public static class JsonHelpers
{
    public static JToken QueryJson(this object jsonObject, params string[] jsonPath)
    {
        const string separator = " -> ";

        if (jsonObject == null)
            throw new Exception(string.Format("Can not perform JSON query '{0}' as the object is null.",
                string.Join(separator, jsonPath ?? new string[0])));

        var json = (jsonObject as JToken) ?? JObject.FromObject(jsonObject);
        var token = json;
        var currentPath = "";

        if (jsonPath != null)
            foreach (var level in jsonPath)
            {
                currentPath += level + separator;
                token = token[level];
                if (token == null) break;
            }

        if (token == null)
            throw new Exception(string.Format("Can not find path '{0}' in JSON object: {1}", currentPath, json));

        return token;
    }
}
如何将其查询到一个新的对象或列表中,该对象或列表很容易放入一些html表/视图中。 我只想显示案例编号、名字和注释

var serializer = new JavaScriptSerializer(); object modelData = serializer.DeserializeObject(jsonstring); var serializer=新的JavaScriptSerializer(); object modelData=serializer.DeserializeObject(jsonstring); 我只想显示案例编号、名字和注释

var serializer = new JavaScriptSerializer(); object modelData = serializer.DeserializeObject(jsonstring); 与往常一样,在ASP.NET MVC中,您可以从编写符合您需求的视图模型开始:

public class MyViewModel
{
    public string CaseNumber { get; set; }
    public string FirstName { get; set; }
    public string Comment { get; set; }
}
然后,在控制器操作中,从已有的JObject实例构建视图模型:

public ActionResult Index()
{
    JObject json = ... the JSON shown in your question (after fixing the errors because what is shown in your question is invalid JSON)

    IEnumerable<MyViewModel> model =
        from item in (JArray)json["RegistrationList"]
        select new MyViewModel
        {
            CaseNumber = item["CaseNumber"].Value<string>(),
            FirstName = item["Person"]["FirstName"].Value<string>(),
            Comment = item["User"]["Comment"].Value<string>(),
        };

    return View(model);
}
public ActionResult Index()
{
JObject json=…问题中显示的json(修复错误后,因为问题中显示的是无效的json)
IEnumerable模型=
来自(JArray)json[“RegistrationList”]中的项
选择新的MyViewModel
{
CaseNumber=项目[“CaseNumber”]。值(),
FirstName=项目[“个人”][“名字”]。值(),
注释=项[“用户”][“注释”]。值(),
};
返回视图(模型);
}
最后,在强类型视图中显示所需的信息:

@model IEnumerable<MyViewModel>

<table>
    <thead>
        <tr>
            <th>Case number</th>
            <th>First name</th>
            <th>Comment</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.CaseNumber</td>
                <td>@item.FirstName</td>
                <td>@item.Comment</td>
            </tr>
        }
    </tbody>
</table>
@model IEnumerable
案件编号
名字
评论
@foreach(模型中的var项目)
{
@项目.案例编号
@item.FirstName
@项目.评论
}

我认为您希望获得如下所示的JSON字符串:

{
'RegistrationList': [       
            {
                'CaseNumber': '120654-1330',
                                    'Priority': 5,
                                    'PersonId': 7,
                                    'Person': {
                                        'FirstName': '0',
                                        'LastName': '',
                                    },
                                    'UserId': 7,
                                    'User': {
                                        'Id': 7,
                                        'CreatedTime': '2013-07-05T13:09:57.87',
                                        'Comment': ''
                                    }
                                },
                                {
                                    'CaseNumber': '120654-1330',
                                    'Priority': 5,
                                    'PersonId': 7,
                                    'Person': {
                                        'FirstName': '0',
                                        'LastName': '',
                                    },
                                    'UserId': 7,
                                    'User': {
                                        'Id': 7,
                                        'CreatedTime': '2013-07-05T13:09:57.87',
                                        'Comment': ''
                                    }
                                },
                            ]
}
如果是这样,您可以获得以下代码来解决您的问题:

            string json = @"{
                            'RegistrationList': [
                                {
                                    'CaseNumber': '120654-1330',
                                    'Priority': 5,
                                    'PersonId': 7,
                                    'Person': {
                                        'FirstName': '0',
                                        'LastName': '',
                                    },
                                    'UserId': 7,
                                    'User': {
                                        'Id': 7,
                                        'CreatedTime': '2013-07-05T13:09:57.87',
                                        'Comment': ''
                                    }
                                },
                                {
                                    'CaseNumber': '120654-1330',
                                    'Priority': 5,
                                    'PersonId': 7,
                                    'Person': {
                                        'FirstName': '0',
                                        'LastName': '',
                                    },
                                    'UserId': 7,
                                    'User': {
                                        'Id': 7,
                                        'CreatedTime': '2013-07-05T13:09:57.87',
                                        'Comment': ''
                                    }
                                },
                            ]
                        }";
        JObject o = JObject.Parse(json);
        JArray list = (JArray)o["RegistrationList"];
        List<Tuple<string, string, string>> rList = new List<Tuple<string, string, string>>();
        foreach (var r in list)
        {
            Tuple<string, string, string> temp = new Tuple<string, string, string>(r["CaseNumber"].Value<string>(), r["Person"]["FirstName"].Value<string>(), r["User"]["Comment"].Value<string>());
            rList.Add(temp);
            Console.WriteLine(temp);
        }
stringjson=@”{
“注册列表”:[
{
‘案件编号’:‘120654-1330’,
"优先":5,,
“PersonId”:7,
“人”:{
“FirstName”:“0”,
“姓氏”:“,
},
“用户ID”:7,
“用户”:{
Id:7,,
“CreatedTime”:“2013-07-05T13:09:57.87”,
“评论”:”
}
},
{
‘案件编号’:‘120654-1330’,
"优先":5,,
“PersonId”:7,
“人”:{
“FirstName”:“0”,
“姓氏”:“,
},
“用户ID”:7,
“用户”:{
Id:7,,
“CreatedTime”:“2013-07-05T13:09:57.87”,
“评论”:”
}
},
]
}";
JObject o=JObject.Parse(json);
JArray列表=(JArray)o[“注册列表”];
List rList=新列表();
foreach(列表中的var r)
{
Tuple temp=new Tuple(r[“CaseNumber”].Value(),r[“Person”][“FirstName”].Value(),r[“User”][“Comment”].Value());
rList.Add(温度);
控制台写入线(临时);
}
有几种方法:

1) 根据文档“”,您可以使用LINQ方式查询JObject

JObject o = JObject.Parse(@"{
  'CPU': 'Intel',
  'Drives': [
    'DVD read/writer',
    '500 gigabyte hard drive'
  ]
}");

string cpu = (string)o["CPU"];
// Intel

string firstDrive = (string)o["Drives"][0];
// DVD read/writer

IList<string> allDrives = o["Drives"].Select(t => (string)t).ToList();
// DVD read/writer
// 500 gigabyte hard drive

这只给了我一个新的对象来处理,没有查询。查询javascript对象更容易吗?