我正在尝试获取Json的特定部分,但无法弄清楚如何。
我的json看起来像:
[
{
"ResourceId":"1",
"ResourceText":"Hello",
"LanguageId":"1"
},
{
"ResourceId":"2",
"ResourceText":"World",
"LanguageId":"1"
}
.
.
.
]
所以例如我想要这个部分(根据pResourceId参数改变,所以我每次都想改变)
{
"ResourceId":"1",
"ResourceText":"Hello",
"LanguageId":"1"
}
但我无法得到它。到目前为止我尝试了什么:
JObject data = JObject.Parse(jsonStringResources);
return data.Values().Where(x => x.Contains("ResourceId\" : \"" +pResourceId +"\"") ) as clsResource;
答案 0 :(得分:2)
我会为你的JSON格式制作一个模型:
class Model
{
public string ResourceId { get; set; }
public string ResourceText { get; set; }
public string LanguageId { get; set; }
}
然后你可以这样做:
var models = JsonConvert.DeserializeObject<List<Model>>(jsonStringResources);
var matchingModel = models.Where(model => model.ResourceId == pResourceId).ToList().FirstOrDefault();
return JsonConvert.SerializeObject(matchingModel);
我们将JSON反序列化为模型列表。然后,我们得到ResourceId
与pResourceId
匹配的模型。最后,我们再次序列化模型以获取JSON字符串。
pResourceId == 1
时,结果为:
{
"ResourceId": "1",
"ResourceText": "Hello",
"LanguageId": "1"
}
答案 1 :(得分:0)
如果您的json看起来像那样,您可以将其反序列化为对象,即:
public class JsonTestModel
{
public JsonTestModel()
{
}
public int ResourceId { get; set; }
public string ResourceText { get; set; }
public int LanguageId { get; set; }
}
然后你可以像这样搜索它:
List<JsonTestModel> theListWithModels = JsonConvert.DeserializeObject<List<JsonTestModel>>(theJsonString);
var extractedModels = theListWithModels.Where(m => m.ResourceId == pResourceId);