gpt4 book ai didi

c# - 无法将 Json 反序列化为对象

转载 作者:行者123 更新时间:2023-11-30 20:50:28 24 4
gpt4 key购买 nike

这是我的 Json:

{"Username":"Test","ProductIds":"[30, 50]","RouteName":"ABCD"}

这是我的对象:

public class SuggestMobileModel
{
public string Username { get; set; }
public List<int> ProductIds { get; set; }
public string RouteName { get; set; }
}

当我将该 Json 转换为该对象时,我可以收到 UsernameRouteName,但 ProductIds 始终为空。它仅在我删除 ProductIds 值中的引号时才有效,如下所示:

{"Username":"Test","ProductIds":[30, 50],"RouteName":"ABCD"}

现在我该怎么做才能在不删除代码的情况下成功反序列化?该 Json 是由代码生成的,因此它始终带有引号。

---编辑!!!---

这是创建该 Json 字符串的 Java 代码。它有什么错误吗?它使用 org.json 库。

// 1. create HttpClient
HttpClient client = new DefaultHttpClient();
HttpResponse response;

// 2. make POST request to the given URL
HttpPost httpPost = new HttpPost(urlSuggestRoute);

String json = "";

// 3. build jsonObject
JSONObject jsonObject = new JSONObject();
jsonObject.accumulate("Username", User.getUsername());
List<Integer> listProductIds = new ArrayList<Integer>();
if (Cart.getCart() != null && Cart.getSize() > 0) {
for (int i = 0; i < Cart.getSize(); i++) {
listProductIds.add(Cart.getCartItem(i)
.getProductAttribute().getProductId());
}
}
jsonObject.accumulate("ProductIds", listProductIds);
jsonObject.accumulate("RouteName", txtRoute.getSelectedItem()
.toString());

// 4. convert JSONObject to JSON to String
json = jsonObject.toString();

// 5. set json to StringEntity
StringEntity se = new StringEntity(json);

// 6. set httpPost Entity
httpPost.setEntity(se);

// 7. Set some headers to inform server about the type of the
// content
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");

// 8. Execute POST request to the given URL
HttpResponse httpResponse = client.execute(httpPost);

最佳答案

在数组值周围放置双引号是无效的 JSON(请参阅 http://json.org/ 处的语言语法)。因此,您的 JSON 解析器可能不支持它。

其他背景信息:您的 JSON 将 ProductIds 定义为与字符串值 [30, 50] 的对。

关于c# - 无法将 Json 反序列化为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22511422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com