相关疑难解决方法(0)

通过连接包含的元素合并两个Json.NET数组

我有两个JToken代表JSON对象数组,我想合并它们.JToken有一个方法,但当我尝试使用它时Concat它会产生null结果.

Action<JToken> Ok = (x) =>
{
    Debug.WriteLine(x);
    /* outputs
    [
      {
        "id": 1,
      },
      {
        "id": 2,
      }
    ]
    */

    x = (x).Concat<JToken>(x) as JToken;
    Debug.WriteLine(x); // null
};
Run Code Online (Sandbox Code Playgroud)

我怎样才能使它工作?

c# json json.net

7
推荐指数
2
解决办法
1万
查看次数

在Java中使用Gson合并/扩展JSON对象

通常,我需要合并两个JSON对象(类似于jQuery的$.extend()工作方式).但是,Gson库没有内置功能,他们说他们不会实现它.

做类似的事情:

private void merge(JsonObject firstObj, JsonObject secondObj){
    for(String keyInSecondObj : secondObj.entrySet().keySet()) {
      if(!firstObj.has(keyInSecondObj )){
        firstObj.add(secondMap.get(keyInSecondObj));
    }
}
Run Code Online (Sandbox Code Playgroud)

太简单了,因为它不处理递归合并JsonObjects,当两个映射中都存在键时不处理冲突,并且没有对非原始值(如Arrays)进行特殊处理.

我没有找到任何预先构建的解决方案来做到这一点.我更喜欢使用已经过彻底测试的东西,而不是编写我自己的方法,但它必须是Gson(不是Jackson或其他).

编辑:我最后编写了自己的实现,因为已经添加了作为这个问题答案

这个问题不是因为它不使用GSON(或Java为此事)中的重复.

java merge json gson

6
推荐指数
2
解决办法
1万
查看次数

如何在C#中将两个不同的JSON连接成单个JSON

我的第一个JSON如下

[{
    "UserId": 4,
    "FirstName": "rupesh",
    "LastName": "Abc",
    "Email": "abc@gmail.com",
    "Gender": "Male"
}]
Run Code Online (Sandbox Code Playgroud)

我的第二个JSON如下

 [{
    "AccountId": 2,
    "AccountName": "rupeshinfo",
    "AccountDomain": null,
    "RoleId": 1,
    "UserId": 4
}, {
    "AccountId": 3,
    "AccountName": "Rameshinfo",
    "AccountDomain": null,
    "RoleId": 2,
    "UserId": 4
}]
Run Code Online (Sandbox Code Playgroud)

结果必须是

{
    "UserDetails": [{
        "UserId": 4,
        "FirstName": "rupesh",
        "LastName": "Abc",
        "Email": "abc@gmail.com",
        "Gender": "Male"
    }],
    "AccountDetails": [{
        "AccountId": 2,
        "AccountName": "rupeshinfo",
        "AccountDomain": null,
        "RoleId": 1,
        "UserId": 4
    }, {
        "AccountId": 3,
        "AccountName": "Rameshinfo",
        "AccountDomain": null,
        "RoleId": 2,
        "UserId": 4
    }]

}
Run Code Online (Sandbox Code Playgroud)

c# json

5
推荐指数
2
解决办法
4705
查看次数

如何在json.net中合并两个json文档?

我不确定正确的术语,因为对 json 不太了解。我有一个以下固定格式的现有 json 字符串/对象(即所有项目都位于根级别并且具有简单的键/值对,尽管项目的数量可能有所不同):

{
  "product_id": "1777",
  "license_key": "ECHOES-SILENCE-PATIENCE-AND-GRACE",
  "valid_for": "365",
  "status": "active",
  "times_activated_max": 1
}
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来添加传递到方法中的不同架构/格式的 json 字符串。该对象可以是任何 json 格式。它将被添加到根中。例如添加这个:

{
"name":"John",
"age":30,
"cars":["Ford", "BMW", "Fiat"]
}
Run Code Online (Sandbox Code Playgroud)

..将变成这样:

{
  "product_id": "1777",
  "license_key": "ECHOES-SILENCE-PATIENCE-AND-GRACE",
  "valid_for": "365",
  "status": "active",
  "times_activated_max": 1
  "name":"John",
  "age":30,
  "cars":["Ford", "BMW", "Fiat"]
}
Run Code Online (Sandbox Code Playgroud)

我可以使用 Newtonsoft.Json 来完成此任务。

我确实读过这篇文章,但无法将其映射到我的问题。

希望有人可以帮忙

c# json json.net

3
推荐指数
1
解决办法
1万
查看次数

在c#中concat两个json字符串

假设我有两个JSON字符串要启动:(来自json.net的例子)

string json1 = @"{
  'Name': 'Bad Boys',
  'ReleaseDate': '1995-4-7T00:00:00',
  'Genres': [
    'Action',
    'Comedy'
  ]
}";

and 

string json2 = @"{
  'Name': 'Good Ol Boys',
  'ReleaseDate': '2995-4-7T00:00:00',
  'Genres': [
    'Action',
    'None'
  ]
}";
Run Code Online (Sandbox Code Playgroud)

将这两个json字符串连接成一个json字符串的方法是什么?我在这里看了几个不同的项目,它们不符合要求,主要是因为它们将两个对象合并为一个 - 我没有看到很多只是在一个字符串中给我两个对象.我找到了这个答案,但它适用于javascript,而不是C#.然而,它接近我想要的.

对于类似问题标记为正确的答案不包含任何解释,也没有足够的代码来为我提供正确的上下文.而且它更接近我想要做的事情,因为它有"数据"元素......而更多票数的答案合并并以某种方式覆盖我的一个对象,留下一个,而不是两个.

我还没准备好对字符串进行反序列化,因为我不知道会提前有多少个对象.换句话说,我想将所有json对象字符串放入一个大字符串中,然后我可以一次性反序列化整个字符串.

我怎么做?

编辑

原来我问的是如何连接两个数组,这根本不是一回事.所以我的问题是错的.这个答案是我上面提到的问题的答案.我最终做的是反序列化每个数组,然后执行该AddRange(d2.data)方法,并重新序列化,以便我可以将整个事件反序列化为一个大的JSON对象.然后我在其他地方使用.

另一件事--C#认为字符串是字符串,但即使JSON对象在技术上是字符串,它们也不是,这是我困惑的一部分.我也不明白JSON对象是如何工作的,就什么是数组而言什么是字符串...我在SO上看到了一些答案,基本上是为了确保你理解JSON中的对象是什么等等.无论如何. ..问题解决了.

c# json

2
推荐指数
1
解决办法
9134
查看次数

如何使用 Json.Net (newtonsoft) 连接两个 Json 对象

我有我想连接成一个 JSON 对象的 JSON 对象。

我如何使用 NewtonSoft 的 JSON 包来做到这一点?

c# json.net

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×5

json ×5

json.net ×3

gson ×1

java ×1

merge ×1