我的代码如下:
ServiceHandler sh = new ServiceHandler();
// Making a request to url and getting response
String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// Getting JSON Array node
contacts = jsonObj.getJSONArray(TAG_CONTACTS);
...
所以我想从Json Obj获取数据。我的失败了"尝试"部分因为它告诉我
" ... / B个在线 3370
{" bpactivities":[{" id":" 160",...... "
所以我假设它是因为像/ b>这样的标签
我现在要做的是切断jsonStr中的所有内容,直到" {" bpactivities":.."启动。
所以例如字符串现在是"我不希望这些东西在这里{" bpactivities":.. ,," "但我想要这样:" {" bpactivities":.." "
那我怎样才能在实际的jsonObj开始之前切断所有东西?有办法吗?
事先提前答案 0 :(得分:1)
如果您知道jsonObj开始之前的部分如何开始,您可以使用:
String jsonStr = " i dont want this stuff to be here {\"bpactivities\": ..,, \" ";
System.out.println(jsonStr.split(" here ")[1]);
//returns_ {"bpactivities": ..,, "
String.split(String regex)返回一个String-Array。在这种情况下,第一个元素包含正则表达式之前的部分,第二个元素包含最后一个部分。
您的解决方案:
JSONObject jsonObj = new JSONObject(jsonStr.substring(jsonStr.indexOf('{')));
同样有效,但如果在你的实际jsonObj之前有任何'{',它将导致问题。
答案 1 :(得分:0)
好吧我这样解决了:
JSONObject jsonObj = new JSONObject(jsonStr.substring(jsonStr.indexOf('{')));