任何人都可以帮助我,我是java编程的新手
假设我有以下数据的JSONArray:
[{
"STATUSUPDATE": 0,
"IDSERV": "2"
}, {
"STATUSUPDATE": 0,
"IDSERV": "3"
}, {
"STATUSUPDATE": 0,
"IDSERV": "1"
}]
如何在STATUSUPDATE
1
IDSERV
更新为2
如何在STATUSUPDATE
2
IDSERV
更新为3
并试图循环数据
for (int i=0; i < array.length; i++){
JSONObject itemArr = (JSONObject)array.get(j);
if(itemArr.get("IDSERV").equals(2)){
//should be itemArr.set(with new val)
//but method *set* can cal; only on JSONArray not an JSONObject
//and looping the next one
}
}
任何人都可以帮助我
答案 0 :(得分:6)
JSONArray
具体代码:
<强>输出强>
Initial array : [{"STATUSUPDATE":0,"IDSERV":"2"},{"STATUSUPDATE":0,"IDSERV":"3"},{"STATUSUPDATE":0,"IDSERV":"1"}]
Output array : [{"STATUSUPDATE":"1","IDSERV":"2"},{"STATUSUPDATE":"2","IDSERV":"3"},{"STATUSUPDATE":0,"IDSERV":"1"}]
<强>代码强>
public class Test {
public static void main(String[] args) throws JSONException {
JSONArray array = new JSONArray("[{\"STATUSUPDATE\":0,\"IDSERV\":\"2\"},{\"STATUSUPDATE\":0,\"IDSERV\":\"3\"},{\"STATUSUPDATE\":0,\"IDSERV\":\"1\"}]");
System.out.println("Initial array : " + array);
for (int i=0; i < array.length(); i++){
JSONObject jsonObject = new JSONObject(array.get(i).toString());
if(jsonObject.get("IDSERV").equals("2")) {
jsonObject.put("STATUSUPDATE", "1");
array.put(i, jsonObject);
}
else if(jsonObject.get("IDSERV").equals("3")) {
jsonObject.put("STATUSUPDATE", "2");
array.put(i, jsonObject);
}
}
System.out.println("Output array : " + array);
}
}
答案 1 :(得分:4)
以下是代码:
array
是您的JSONArray
for (int i=0; i < array.length(); i++){
JSONObject itemArr = (JSONObject)arr.get(i);
if(itemArr.get("IDSERV").getAsString().equals("2")){
itemArr.put("STATUSUPDATE", 1);
}else if(itemArr.get("IDSERV").getAsString().equals("3")){
itemArr.put("STATUSUPDATE", 2);
}
}
现在,如果您打印array
,则可以看到值已更改。
答案 2 :(得分:0)
使用正则表达式和替换所有:
package topic;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class SenderTopic {
private ConnectionFactory factory = null;
private Connection connection = null;
private Session session = null;
private Destination destination = null;
private MessageProducer producer = null;
private boolean jmsInitialized = false;
public SenderTopic() {
}
private void initJMS() throws JMSException {
factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createTopic("SAMPLE_TOPIC");
producer = session.createProducer(destination);
jmsInitialized = true;
}
private void sendMessage(String message) {
if (!jmsInitialized) {
try {
initJMS();
sendTextMessage(message);
} catch (JMSException e) {
jmsInitialized = false;
e.printStackTrace();
}
}
}
private void sendTextMessage(String message) throws JMSException {
TextMessage textMessage = session.createTextMessage(message);
producer.send(textMessage);
}
public static void main(String[] args) throws IOException {
SenderTopic receiver = new SenderTopic();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String message = reader.readLine();
receiver.sendMessage(message);
}
}
}
以上将找到并替换所有 IDSERV 字段
如果您只想查找并替换其中一个 IDSERV 字段,请将String json = ...
json.replaceAll("(?<=\"IDSERV\":\")\\d*(?=\")", new value);
更改为\\d
并将预期值设置为在大括号之间切换。
例如:[]
会查找并替换所有等于[1]
的值。
<强> EDIT1:强>
好的,你刚刚编辑了这个问题。
此正则表达式允许您定位特定的IDSERV并更改其STATUSUPDATE字段。
1
在上文中,将数字(?<=:)\d*(?=,"IDSERV":"1")
更改为您要查找的IDSERV值。
在java中:
1
答案 3 :(得分:0)
在用户角色上,我曾经将某些字段的十进制值替换为零。它的工作
shimpment=shimpment.replaceAll("\"shipmentValue\":[0-9]+.[0-9]+", "\"shipmentValue\":0.00");
shimpment=shimpment.replaceAll("\"price\":[0-9]+.[0-9]+", "\"price\":0.00");
shimpment=shimpment.replaceAll("\"tax\":[0-9]+.[0-9]+", "\"tax\":0.00");