GVKun编程网logo

遍历JSON数组并将项目添加到列表C#(遍历json数组对象)

21

最近很多小伙伴都在问遍历JSON数组并将项目添加到列表C#和遍历json数组对象这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Angular共享服务-将项目添加到列表时,共享服务

最近很多小伙伴都在问遍历JSON数组并将项目添加到列表C#遍历json数组对象这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Angular共享服务-将项目添加到列表时,共享服务正在复制数据、asp.net-mvc – MVC5将项目添加到列表中、Crystal 报告数组未在组中的第一个项目之后将项目添加到数组、JAVA中如何解析和遍历JSON数组?掌握JSON数组处理技巧。等相关知识,下面开始了哦!

本文目录一览:

遍历JSON数组并将项目添加到列表C#(遍历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共享服务-将项目添加到列表时,共享服务正在复制数据

Angular共享服务-将项目添加到列表时,共享服务正在复制数据

您始终必须取消订阅Observable。 阅读此article并使用ngOnDestroy更新代码,您将在其中从{Observable}中.unsubscribe(),或添加一些类似.pipe(take(1))的可管道运算符。 在此处Piepable operators

了解更多

asp.net-mvc – MVC5将项目添加到列表中

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>

解决方法

感谢 This Link,我终于能够解决这个问题了

这确实是一个具有约束力的问题.似乎对于像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 报告数组未在组中的第一个项目之后将项目添加到数组

如何解决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数组处理技巧。

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数组处理技巧。的相关信息,请在本站查询。

本文标签: