我正在尝试使用JSON.net反序列化对C#对象的JSON响应。
我在将嵌套对象转换为C#列表时遇到问题。
我在下面得到JSON响应。
我想将所有<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span id="insertblank">
<button type="button" class="btn" id="custom-button">Insert Input</button>
</span>
<div class="col-md-12 form-group fillin-answer">
<!-- My PHP WHILE loop would actually be here, but for illustration, I have manually inserted the elements as below -->
<!-- BEGIN INSERTED ELEMENTS -->
<div class="blanksanswers" id="removeans1">
<label class="removeans1">
Input <span>1</span><span class="text-danger">*</span>
<button type="button" class="btn btn-sm btn-danger remove" data-id="1">
Remove 1 Input
</button>
</label>
<div class="input-group removeans1">
<input class="form-control" id="fillin_answer1" name="fillin_answer[]" value="some values"/>
</div>
</div>
<!--END INSERTED ELEMENTS-->
</div>
下的节点放在C#中的单个variants
中。
如何编辑反序列化器,以便可以对其进行反序列化?
List<Variant>
C#类:
{
"feature_id": "48808",
"feature_code": "",
"company_id": "1",
"feature_type": "S",
"parent_id": "0",
"display_on_product": "Y",
"display_on_catalog": "N",
"display_on_header": "N",
"description": "",
"lang_code": "nl",
"prefix": "",
"suffix": "",
"categories_path": "30,149,161,218,219,220,221,222,483",
"full_description": "",
"status": "A",
"comparison": "Y",
"position": "8830",
"purpose": "find_products",
"feature_style": "text",
"filter_style": "checkbox",
"variants": {
"61719": {
"variant_id": "61719",
"variant": "CEE 230V\\/16A",
"description": "CEE 230V\\/16A",
"page_title": "",
"meta_keywords": "",
"meta_description": "",
"lang_code": "nl",
"feature_id": "48808",
"url": "",
"color": "",
"position": "0",
"seo_name": null,
"seo_path": null,
"image_pair": null
},
"61720": {
"variant_id": "61720",
"variant": "CEE 400V\\/16A",
"description": "CEE 400V\\/16A",
"page_title": "",
"meta_keywords": "",
"meta_description": "",
"lang_code": "nl",
"feature_id": "48808",
"url": "",
"color": "",
"position": "0",
"seo_name": null,
"seo_path": null,
"image_pair": null
},
"61721": {
"variant_id": "61721",
"variant": "CEE 400V\\/32A",
"description": "CEE 400V\\/32A",
"page_title": "",
"meta_keywords": "",
"meta_description": "",
"lang_code": "nl",
"feature_id": "48808",
"url": "",
"color": "",
"position": "0",
"seo_name": null,
"seo_path": null,
"image_pair": null
},
"61722": {
"variant_id": "61722",
"variant": "CEE 400V\\/63A",
"description": "CEE 400V\\/63A",
"page_title": "",
"meta_keywords": "",
"meta_description": "",
"lang_code": "nl",
"feature_id": "48808",
"url": "",
"color": "",
"position": "0",
"seo_name": null,
"seo_path": null,
"image_pair": null
}
}
}
答案 0 :(得分:-1)
您可以采用的一种方法是将JSON .Parse()
变成dynamic
对象。
例如:
string jsonString = @"Your JSON String";
dynamic parsedJson = JValue.Parse(jsonString);
之后,您应该能够使用LINQ遍历dynamic
对象并提取Variant
来源:
答案 1 :(得分:-1)
以下代码将解决您的问题:
SELECT slotguest.FK_SlotNo, Sum(CASE WHEN guest.vip = 1 THEN 1 ELSE 0 END) AS guest_count
FROM guest
INNER JOIN slotguest ON guest.GuestID = slotguest.FK_guest
GROUP BY slotguest.FK_SlotNo;
的主类:List
public class JsonList
{
public List<MainListKeep> ListToKeep { get; set; }
}
类项目类型的类:JsonList
public class MainListKeep
{
public string feature_id { get; set; }
public string feature_code { get; set; }
public string company_id{ get; set; }
public string feature_type { get; set; }
public string parent_id{ get; set; }
...
...
...
...
public List<VariantsList> variants{ get; set; }
}
项目类型的类:variants
然后您使用以下方法反序列化:
public class VariantsList
{
public string variant_id { get; set; }
public string variant { get; set; }
public string description { get; set; }
public string page_title { get; set; }
...
...
...
...
}
然后,您在JsonList jsonList = new JsonList();
jsonList = JsonConvert.DeserializeObject<JsonList>(YourJSONContentString);
对象中拥有所有JSON响应项目,可以根据需要使用它们。
与代码相关的变量名称必须与上面创建的类中相同相同。