gpt4 book ai didi

java - 改造 - 从 C# 获取的 json 中删除转义字符

转载 作者:行者123 更新时间:2023-11-30 01:51:08 29 4
gpt4 key购买 nike

我有这个 json 字符串(?)是我通过调用 C# Api 得到的

"{\"PublicApiToken\":\"M6RVJcCyiVODapF0wOR/Pg==\",\"ErrorList\":[]}"

这将返回一个错误:

retrofit.RetrofitError: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 2 path $

有什么可以转换/清理的吗?我试过研究,最接近的是这个链接:Retrofit - removing some invalid characters from response body before parsing it as json

但不幸的是,它仍然根本无法解决我的问题。

你们解决了这个问题吗?

我的方法调用:

@Headers("Content-Type: application/json")
@POST("/authorize/AcquirePublicApiToken")
void attemptLoginToMCCServer(@Header("Content-Type") String contentType, @Header("Authorization") String authorization, @Body Authorization authorizationKey, Callback<SuccessLoginCallback> successLoginCallback);

我的 Pojo:

public class Authorization {

private String consumerName;
private String username;
private String consumerKey;
private String password;
private String nonce;
private String timeStamp;

public String getConsumerName() {
return consumerName;
}

public void setConsumerName(String consumerName) {
this.consumerName = consumerName;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getConsumerKey() {
return consumerKey;
}

public void setConsumerKey(String consumerKey) {
this.consumerKey = consumerKey;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getNonce() {
return nonce;
}

public void setNonce(String nonce) {
this.nonce = nonce;
}

public String getTimeStamp() {
return timeStamp;
}

public void setTimeStamp(String timeStamp) {
this.timeStamp = timeStamp;
}

@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("amx ");
sb.append(getConsumerName());
sb.append("-");
sb.append(getUsername());
sb.append(":");
sb.append(getConsumerKey());
sb.append("-");
sb.append(getPassword());
sb.append(":");
sb.append(getNonce());
sb.append(":");
sb.append(getTimeStamp());



return sb.toString();
}
}

最佳答案

似乎只有引号 " 被转义了。评论中提到的最佳解决方案是尽可能让服务器修复它。如果你坚持使用它,This answer 来自您链接到的问题几乎可以完全满足您的需求。您只需调整无效字符的含义即可。

此行删除了答案中开头和结尾的 ()

String clean = dirty.replaceAll("(^\\(|\\)$)", "");

您想将 \" 替换为 ",因此将上面的行更改为 --

String clean = dirty.replaceAll("^\"|\"$","").replace("\\\"", "\"");

请注意,这仅在上述关于引号是唯一转义字符的假设成立时才有效。

关于java - 改造 - 从 C# 获取的 json 中删除转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33043211/

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