最近很多小伙伴都在问遍历JSON数组并将项目添加到列表C#和遍历json数组对象这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Angular共享服务-将项目添加到列表时,共享服务
最近很多小伙伴都在问遍历JSON数组并将项目添加到列表C#和遍历json数组对象这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Angular共享服务-将项目添加到列表时,共享服务正在复制数据、asp.net-mvc – MVC5将项目添加到列表中、Crystal 报告数组未在组中的第一个项目之后将项目添加到数组、JAVA中如何解析和遍历JSON数组?掌握JSON数组处理技巧。等相关知识,下面开始了哦!
本文目录一览:- 遍历JSON数组并将项目添加到列表C#(遍历json数组对象)
- Angular共享服务-将项目添加到列表时,共享服务正在复制数据
- asp.net-mvc – MVC5将项目添加到列表中
- Crystal 报告数组未在组中的第一个项目之后将项目添加到数组
- JAVA中如何解析和遍历JSON数组?掌握JSON数组处理技巧。
遍历JSON数组并将项目添加到列表C#(遍历json数组对象)
您正尝试在dynamic
中添加List<string>
,而应该这样做
emailList.Add(item.email.ToString());
代码:
string json =
"{\"EmailList\":[{\"name\":\"John Bravo\",\"email\":\"email@gmail.com\"},{\"name\":\"Daniel Alutcher\",{\"name\":\"James Rodriguez\",\"email\":\"email@gmail.com\"}]}";
JObject rss = JObject.Parse(json);
var data = JsonConvert.DeserializeObject<dynamic>(json);
dynamic emails = data.EmailList;
List<string> emailList = new List<string>();
foreach (dynamic item in emails)
{
int x = 0;
if (item.email != null)
{
Console.WriteLine(item.email);
emailList.Add(item.email.ToString()); // Change here
}
}
,
您评论了“此代码中是否有任何方法可以避免“动态”?” 。
好吧,这很简单,这是过去的简单复制!
在Visual Studio中,使用顶部栏中的特殊过去菜单(image)。
或使用app.quicktype.io或json2csharp.com之类的在线工具。
using Newtonsoft.Json;
public partial class JsonData //Give it a better name
{
[JsonProperty("EmailList")] public List<EmailInformation> EmailList { get; set; }
}
public partial class EmailInformation
{
[JsonProperty("name")] public string Name { get; set; }
[JsonProperty("email")] public string Email { get; set; }
}
用法也非常简单,并且您的代码中已经包含了大部分内容:
var data = JsonConvert.DeserializeObject<JsonData>(json);
foreach(var mailInfo in data.EmailList){
Console.WriteLine($"{mailInfo.Name} <{mailInfo.Email}>;");
}
//here a list of string
var emails = data.EmailList.Select(x=> x.Email).ToList();
Angular共享服务-将项目添加到列表时,共享服务正在复制数据
您始终必须取消订阅Observable。
阅读此article并使用ngOnDestroy更新代码,您将在其中从{Observable}中.unsubscribe()
,或添加一些类似.pipe(take(1))
的可管道运算符。
在此处Piepable operators
asp.net-mvc – MVC5将项目添加到列表中
public class Receipt: BaseEntity { [required(AllowEmptyStrings = false,ErrorMessage = "Please Select A Store")] public Store Store { get; set; } public List<Item> Items { get; set; } public Item NewItem { get; private set; } [required(AllowEmptyStrings = false,ErrorMessage = "ReceiptModel.EntryDate is required")] public DateTime EntryDate { get; set; } public Guid EntryOwner { get; set; } public string Name { get; set; } public double ReceiptTotal() { return Items.Sum(item => item.ItemPrice); } public Receipt() { Items = new List<Item>(); EntryOwner = Guid.Empty; EntryDate = DateTime.Now; Store = new Store(); NewItem = new Item(); } }
和一个控制器:
public class ReceiptController : Controller { // // GET: /Receipt/ public ActionResult Index() { Receipt receipt = new Receipt(); return View(receipt); } [HttpPost] public ActionResult AddItem(Receipt receipt) { receipt.Items.Add(receipt.NewItem); if (ModelState.IsValid) { return View("Index",receipt); } return View("Index",receipt); }
并且视图:更新后的视图 – 删除了所有部分页面并合并为一个页面
<formmethod="POST" action="@Url.Action("AddItem","Receipt")"> <div> <div id="main"> <divhttps://www.jb51.cc/tag/heading/" target="_blank">heading"> <h1>Receipt Builder</h1></div> <div> <fieldset> @Html.LabelFor(model => model.Name) @Html.EditorFor(model => model.Name) @Html.LabelFor(model => model.Store.Name) @Html.EditorFor(model => model.Store.Name) @Html.LabelFor(model => model.EntryDate) @Html.EditorFor(model => model.EntryDate) </fieldset> </div> </div> </div> <table> <thead> <tr> <td> <label>#</label> </td> <td> <label>Item</label> </td> <td> <label>Unit</label> </td> <td> <label>Quantity</label> </td> <td> <label>UnitPrice</label> </td> <td> <label>Category</label> </td> <td> <label>Total</label> </td> </tr> <tr> <td> <buttonname="Submit" id="Submit" type="submit">+</button> </td> <td> @Html.EditorFor(model => model.NewItem.Name) </td> <td> @Html.EditorFor(model => model.NewItem.UnitType) </td> <td> @Html.EditorFor(model => model.NewItem.Quantity) </td> <td> @Html.EditorFor(model => model.NewItem.UnitPrice) </td> <td> @Html.EditorFor(model => model.NewItem.Category.Name)<br/> @Html.EditorFor(model => model.NewItem.Category.IsTaxable) </td> <td> @Html.EditorFor(model => model.NewItem.ItemPrice) </td> </tr> </thead> <tbody> @foreach (var item in Model.Items) { <tr> <td> @Model.Items.ToList().IndexOf(item) + 1 </td> <td> @Html.LabelFor(titem => item.Name) </td> <td> @Html.LabelFor(titem => item.UnitType) </td> <td> @Html.LabelFor(titem => item.Quantity) </td> <td> @Html.LabelFor(titem => item.UnitPrice) </td> <td> @Html.LabelFor(titem => item.Category.Name) </td> <td> @Html.LabelFor(titem => item.ItemPrice) </td> </tr> } </tbody> <tfoot></tfoot> </table>
解决方法
这确实是一个具有约束力的问题.似乎对于像Lists这样的复杂集合,我们实际上无法像我希望的那样利用IEnumerable的好处.这是由于数据在具有不明确名称的帖子中实际传递的方式.这是最终的代码(只需要更新视图)
@for (int i = 0; i < Model.Items.Count(); i++) { <tr> <td> @(i+1) </td> <td> @Html.TextBoxFor(m => m.Items[i].Name) </td> <td> @Html.TextBoxFor(m => m.Items[i].UnitType) </td> <td> @Html.TextBoxFor(m => m.Items[i].Quantity) </td> <td> @Html.TextBoxFor(m => m.Items[i].UnitPrice) </td> <td> @Html.TextBoxFor(m => m.Items[i].Category.Name) </td> <td> @Model.Items[i].ItemPrice </td> </tr> }
生成的HTML将每个元素命名为其索引,即Item [N] .Name现在可以正确绑定发布数据.
Crystal 报告数组未在组中的第一个项目之后将项目添加到数组
如何解决Crystal 报告数组未在组中的第一个项目之后将项目添加到数组?
我有两个报告的设置方式与一个相同,而另一个则没有。 我初始化了第一组中的变量
shared StringVar Array WcAr := [""];
shared StringVar Array ShAr := [""];
shared StringVar Shstr :="";
shared StringVar Array RhAr := [""];
shared StringVar Array UcAr := [""];
shared StringVar Array TcAr := [""];
shared StringVar Array BuAr := [""];
shared StringVar Array RqAr := [""];
shared StringVar Array SqAr := [""];
shared StringVar Array BcAr := [""];
shared NumberVar x := 1;
然后我将数组加载到组 4(工作中心)
shared StringVar Array WcAr;
shared StringVar Array ShAr;
shared StringVar Shstr :="";
shared StringVar Array RhAr;
shared StringVar Array UcAr;
shared StringVar Array TcAr;
shared StringVar Array BuAr;
shared StringVar Array RqAr;
shared StringVar Array SqAr;
shared StringVar Array BcAr;
shared NumberVar x;
(if not IsNull({@Work Center}) then WcAr [x] := {@Work Center};
ReDim preserve WcAr[UBound (WcAr)+1];
ShAr [x] := Cstr({Job_Operation.Act_Setup_Hrs},"####.##",2,",".");
ReDim preserve ShAr[UBound (ShAr)+1];
RhAr [x] := Cstr({Job_Operation.Act_Run_Hrs},".");
ReDim preserve RhAr[UBound (RhAr)+1];
UcAr [x] := Cstr({Job_Operation.Act_Unit_Cost},".");
ReDim preserve UcAr[UBound (UcAr)+1];
TcAr [x] := Cstr({Job_Operation.Act_Total_Cost}+
{Job_Operation.Act_Run_Labor},".");
ReDim preserve TcAr[UBound (TcAr)+1];
x := x+1;);
我在用于每个数组的组页脚中输出这些
shared StringVar Array WcAr;
Join(WcAr,ChrW(10));
只有第一项被添加到任何数组中。 x 已经增加并且等于 17,这表明它通过了公式。我试过没有 if 语句和任何我能想到的东西,但我总是得到相同的结果。
解决方法
这应该有效,至少对于您的 WcAr
。当您使用 Chr(10) 作为数组元素的分隔符时,我猜您只会看到第一个元素,因为字段格式不允许它增加。 => 在输出字段格式中激活“可以增长”,或使用另一个分隔符。
我的测试场景是这三个公式,其中COMMAND.STRING当然是输入字段:
初始化
shared StringVar Array WcAr := [""];
shared NumberVar x := 1;
添加
shared StringVar Array WcAr;
shared NumberVar x;
WcAr [x] := {COMMAND.STRING};
ReDim preserve WcAr[UBound (WcAr)+1];
x := x+1;
输出
shared StringVar Array WcAr;
Join(WcAr,'','');
重要提示:添加公式字段必须放在重复的部分中,在我的情况下是详细信息部分,在您的情况下可能是组标题。输出公式只能显示收集到的值,当它放在最后一个值被收集的部分之后(或其中)。
JAVA中如何解析和遍历JSON数组?掌握JSON数组处理技巧。
JAVA中如何解析和遍历JSON数组?掌握JSON数组处理技巧。
随着现代互联网的快速发展,JSON(JavaScript Object Notation)已经成为了一种常用的数据交换格式。它简洁、易读,非常适合用于Web开发和API接口的数据传输。在JAVA中,解析和遍历JSON数组是非常常见的操作。本篇文章将介绍如何使用JAVA解析JSON数组,并给出相应的代码示例。
首先,我们需要导入相关的库来处理JSON。在JAVA中,可以使用一些第三方的库,比如Jackson、Gson等。这里,我们以Jackson库为例进行介绍。首先,在你的项目中添加相应的依赖:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.12.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.3</version> </dependency>
下面是一个简单的JSON数组示例:
立即学习“Java免费学习笔记(深入)”;
点击下载“修复打印机驱动工具”;
[ { "name": "Alice", "age": 25 }, { "name": "Bob", "age": 28 }, { "name": "Charlie", "age": 30 } ]
接下来,我们来看一下如何使用JAVA解析和遍历这个JSON数组。
首先,我们需要定义一个POJO类(Plain Old Java Object)来映射JSON中的数据。对于上面的JSON数组示例,我们可以定义一个Person类:
public class Person { private String name; private int age; // 省略getter和setter方法 }
然后,我们可以使用以下代码来解析JSON数组:
import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; public class JsonArrayParsingExample { public static void main(String[] args) { String json = "[{"name":"Alice","age":25},{"name":"Bob","age":28},{"name":"Charlie","age":30}]"; ObjectMapper objectMapper = new ObjectMapper(); try { Person[] persons = objectMapper.readValue(json, Person[].class); // 遍历数组 for (Person person : persons) { System.out.println("Name: " + person.getName() + ", Age: " + person.getAge()); } } catch (IOException e) { e.printStackTrace(); } } }
首先,我们创建了一个ObjectMapper实例,它是Jackson库的核心类,用于处理JSON。然后,我们使用readValue方法将JSON字符串转换为Person对象的数组。最后,我们通过遍历数组,打印出每个人的姓名和年龄。
以上代码输出:
Name: Alice, Age: 25 Name: Bob, Age: 28 Name: Charlie, Age: 30
如果JSON数组中的每个对象具有不同的结构,我们可以使用JsonNode对象来处理。JsonNode是Jackson库中用于表示JSON节点的一个抽象类。以下是一个处理不同结构的JSON数组的示例:
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; public class JsonArrayParsingExample { public static void main(String[] args) { String json = "[{"name":"Alice","age":25},{"title":"Software Engineer","salary":5000}]"; ObjectMapper objectMapper = new ObjectMapper(); try { JsonNode[] nodes = objectMapper.readValue(json, JsonNode[].class); // 遍历数组 for (JsonNode node : nodes) { // 判断节点类型 if (node.has("name")) { String name = node.get("name").asText(); int age = node.get("age").asInt(); System.out.println("Name: " + name + ", Age: " + age); } else if (node.has("title")) { String title = node.get("title").asText(); int salary = node.get("salary").asInt(); System.out.println("Title: " + title + ", Salary: " + salary); } } } catch (IOException e) { e.printStackTrace(); } } }
输出:
Name: Alice, Age: 25 Title: Software Engineer, Salary: 5000
以上就是关于JAVA中解析和遍历JSON数组的简单示例。掌握这些基本技巧,可以方便地处理从服务器返回的JSON数据,提取出需要的信息,进行进一步的处理和展示。希望本篇文章对你有所帮助!
以上就是JAVA中如何解析和遍历JSON数组?掌握JSON数组处理技巧。的详细内容,更多请关注php中文网其它相关文章!
我们今天的关于遍历JSON数组并将项目添加到列表C#和遍历json数组对象的分享已经告一段落,感谢您的关注,如果您想了解更多关于Angular共享服务-将项目添加到列表时,共享服务正在复制数据、asp.net-mvc – MVC5将项目添加到列表中、Crystal 报告数组未在组中的第一个项目之后将项目添加到数组、JAVA中如何解析和遍历JSON数组?掌握JSON数组处理技巧。的相关信息,请在本站查询。
本文标签: